升级 NGINX 和 PHP-FPM 后,PHP 停止工作,但任何地方都没有任何错误

升级 NGINX 和 PHP-FPM 后,PHP 停止工作,但任何地方都没有任何错误

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 文件中(我猜是在更新期间从该文件中删除的)

相关内容