Tôi vừa cài đặt máy chủ nginx + php-fpm. Mọi thứ có vẻ ổn ngoại trừ PHP-FPM không bao giờ ghi lỗi vào nhật ký của nó.
fpm.conf
[default]
listen = /var/run/php-fpm/default.sock
listen.allowed_clients = 127.0.0.1
listen.owner = webusr
listen.group = webusr
listen.mode = 0666
user = webusr
group = webusr
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /php/fpm/status
ping.path = /php/fpm/ping
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/default/slow.log
chroot = /var/www/sites/webusr
catch_workers_output = yes
env[HOSTNAME] = mapsvr.mapking.com
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/default/error.log
php_admin_flag[log_errors] = on
nginx.conf
server
{
listen 80 default_server;
server_name _;
charset utf-8;
access_log /var/log/nginx/access.log rest;
include conf.d/drops.conf.inc;
location /
{
root /var/www/sites/webusr/htdocs;
index index.html index.htm index.php;
}
# pass the PHP scripts to FastCGI server listening on socket
#
location ~ \.php$
{
root /var/www/sites/webusr/htdocs;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /htdocs/$fastcgi_script_name;
if (-f $request_filename)
{
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
}
location = /php/fpm/status
{
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
location = /php/fpm/ping
{
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root /usr/share/nginx/html;
}
}
Tôi đã tạo một tập lệnh php sai và chạy và thấy đầu ra lỗi trên trình duyệt web. Ngoài ra nhật ký lỗi nginx trạng thái đầu ra stderr từ fpm với cùng một thông báo. Tôi đã kiểm tra xem người dùng có quyền ghi (thậm chí tôi đã thử 777) vào thư mục nhật ký được chỉ định hay không. Ngay cả tệp error.log được chỉ định cũng đã được php-fpm tạo thành công. Tuy nhiên, tệp nhật ký luôn trống, bất kể lỗi nghiêm trọng nào đã được tạo từ tập lệnh php.
Chuyện gì đang xảy ra vậy?
[Tìm thấy lý do khá lâu sau đó]
Đó là sự cho phép. Thay đổi chủ sở hữu để người dùng của trang web giải quyết vấn đề.