php - 如何在 CHROOT 时使用 Nginx + PHP-FPM 配置 Symfony 4
问题描述
当 Not Chroot with PHP-FPM 时,我的 Symfony 站点运行良好。但是,当我启用 chroot 时,我的站点因 500 错误而中断,并且没有 nginx 日志。
该站点最初运行但在第 25 行中断:
$response = $kernel->handle($request);
我已经相应地更改了我的 nginx conf 文件,以便在 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 服务器块 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 中没有报告错误日志,因此很难理解问题所在。
解决方案
推荐阅读
- c# - 数据表中行之间的 C# 总和
- r - R中的Box Cox转换故障排除(需要使用for循环或应用)
- arrays - 数组中两个元素的最大和减去它们之间的距离
- ios - 使用自定义单元格从搜索中更新 tableView
- r - 根据列名、ID 号和其他数据框中的键值替换数据框中的值
- c - 如何使用 cJSON 在名称/值对中查找名称
- javascript - 如何在css和js中创建一个带有向鼠标指针旋转的字符串的球体?
- xpages - documentId 解析代码没有被执行 XPages
- python-3.x - 在大于 9 的整数之后 提供的绑定数量不正确。当前语句使用 1,并且提供了 2
- javascript - Javascript/jquery - 在 dom 中上升 2 级(让我们将此对象称为“A”),然后将 css 应用于“A”的其中一个孩子