PHP-FPM 正在运行,NGINX 正在运行。NGINX 确实读取了 PHP-FPM 的套接字。我停止了 PHP-FPM,然后出现了网关错误。但是,什么都没有显示。我检查了 nginx/error.log 和 php5-fpm.log,没有出现与此相关的错误。
我更改了 PHP-FPM 中的日志记录以查看发生了什么,并根据请求根据需要创建子进程(pm=ondemand)。
这是我的 php-fpm.conf:
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
log_level = debug
include=/etc/php5/fpm/pool.d/*.conf
pool.d/www.conf(那里唯一的文件)[www] user=www-data group=www-data
listen=/var/run/php5-fpm.sock
listen.owner=www-data
listen.group=www-data
pm=ondemand
pm.max_children=4
pm.start_servers=2
pm.min_spare_servers=1
pm.max_spare_servers=3
chdir=/
这是 nginx.conf
user www-data www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
client_max_body_size 32M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
upstream php {
server unix:/var/run/php5-fpm.sock;
}
include /etc/nginx/sites-enabled/*;
}
如果某个地方出了错,我会尝试做点什么,但在这里,我甚至不知道为什么这不起作用。我唯一尝试过的就是重启两台服务器,但这没有用。
编辑:这是一个不适用的虚拟服务器
server {
listen 80;
server_name example.com www.example.com;
index index.php;
root /var/www/example.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
/var/www/example.com 内的目录和文件权限为 root:www-data rwxr-xr-x
还忘了提:
NGINX Version: 1.8.0
PHP version: 5.6.11-1~dotdeb+7.1 w/ Zeng Opcache v7.0.6-dev
答案1
我找到了问题并解决了它:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
这是虚拟服务器配置中缺少的行。我刚刚将其添加到 fastcgi_params 文件中(我猜是在更新期间从该文件中删除的)