O Chroot não funciona com o php-fpm

1

eu deveria usar o chroot para meu diretório ftp no meu site: Meu php-fpm.conf:

[mysite.com]
listen = /var/run/php7-fpm-chroot-filemanager.sock
chroot = /var/www/mysite.com/fileman
chdir = /
user = filemanuser
group = filemangroup
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Minha parte do nginx.conf:

    location ~* /fileman/(.+\.php)$
    {

            root /var/www/mysite.com/;
            include /etc/nginx/fastcgi_params;
            if (!-f /var/www/mysite.com$fastcgi_script_name) {
                    return 405;
            }
            fastcgi_index index.php;
            fastcgi_pass unix:/var/run/php7-fpm-chroot-filemanager.sock
            fastcgi_param SCRIPT_FILENAME /var/www/mysite.com$fastcgi_script_name;
    }

Após o reinício dos serviços, vejo na página:

File not found. 

Nos registros do nginx:

2017/02/24 20:12:22 [error] 18390#18390: *108 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.110.25, server: www.mysite.com, request: "GET /fileman/index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php7-fpm-chroot-filemanager.sock:", host: "www.mysite.com"

Sem opções de chroot, tudo está bem. Onde eu tenho um erro? Por favor ajude.

    
por Valeriu 24.02.2017 / 21:56

1 resposta

1

Com Arquivo não encontrado e script principal desconhecido , veja a variável SCRIPT_FILENAME

Essa variável passa o nome do caminho do script para php-fpm . Com php-fpm sendo executado em um ambiente chroot, o nome do caminho deve ser relativo ao diretório chroot.

Você já capturou a maior parte desse nome de caminho modificado usando a expressão regular na diretiva location .

Por exemplo:

location ~* ^/fileman(/.+\.php)$
{
    root /var/www/mysite.com;
    try_files $uri =405;

    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $1;
    fastcgi_pass unix:/var/run/php7-fpm-chroot-filemanager.sock
}
    
por 26.02.2017 / 12:59