Как настроить Symfony 4 с Nginx + PHP-FPM во время CHROOT - PullRequest
0 голосов
/ 01 мая 2019

Мой сайт Symfony работает нормально, если не Chroot с PHP-FPM. Однако, когда я включаю chroot, мой сайт ломается с ошибкой 500 и без журналов nginx.

Сайт изначально работает, но перерыв в строке 25:

$response = $kernel->handle($request);

Я изменил свой файл conf nginx соответствующим образом, чтобы правильно выполнить сайт в среде chroot. В основном, просто заменив $realpath_root на /public. Такая же настройка chroot отлично работает для других сайтов, таких как WordPress, но, похоже, Symfony не работает.

Вот мой пул php-fpm:

[website.com]
prefix = /srv/web/$pool
user = web
group = web
listen = /run/php/php7.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chroot = $prefix
chdir = /
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 256M
php_admin_value[post_max_size] = 256M
php_admin_value[cgi.fix_pathinfo]=0
php_admin_value[max_execution_time] = 300
php_admin_value[max_input_vars] = 5000

Вот мой блок Nginx server website.conf:

server {
    listen 80;
    listen [::]:80;

    server_name website.com www.website.com;

    root /srv/web/website.com/public;

    access_log    /var/log/nginx/website.com.access.log;
    error_log     /var/log/nginx/website.com.error.log;

    index index.php index.html;

    location / {
        # try to serve file directly, fallback to index.php
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /public$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT /public;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }
}

Все работает, если удалить chroot, изменив:

chroot = $prefix
chdir = /

до

;chroot = $prefix
;chdir = /

и

fastcgi_param SCRIPT_FILENAME /public$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /public;

до

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

Я предполагаю, что Symfony может не работать в этой среде или ему нужна какая-то конфигурация для работы. Опять же, в /var/log/nginx/website.com.error.log нет журналов ошибок, поэтому очень сложно понять, в чем проблема.

...