PHP-FPM 无法与 nginx 和 CentOS 兼容

PHP-FPM 无法与 nginx 和 CentOS 兼容

在无法让 FastCGI 与 PHP 协同工作后,我安装了 PHP-FPM 服务,据说该服务开箱即用,但是 PHP 文件正在下载而不是执行。

这是我在 nginx.conf 文件中的内容:

server {
    listen 80;
    server_name  pubserver;
    root         /usr/share/nginx/html;
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

该命令netstat -tulpn | grep :9000显示以下内容,表明 PHP-FPM 正在运行:

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      1058/php-fpm.conf)

答案1

终于让它工作了。检查日志后,我注意到有这样的错误,表明重定向循环:

2012/06/02 09:48:30 [错误] 1699#0:处理“/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/favicon.ico”时 *14 重写或内部重定向循环

于是我彻底检查了 nginx.conf 文件,发现了这一行:

include /etc/nginx/conf.d/*.conf;

正在加载另外 3 个文件,分别是:

  • 默认配置文件
  • ssl.conf
  • 虚拟配置文件

打开 default.conf 后,我注意到已经存在以下规则:

server {
    listen 80;
    server_name  _;
    root         /usr/share/nginx/html/demo;
    index        index.php;

    location ~ \.php$ {
        include        /etc/nginx/fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;

    }
}

可能是因为我从 CentOS 存储库安装了 nginx 和 PHP-FPM,所以它们已经配置好了。显然,我在测试 PHP 服务是否正常工作之前就匆忙配置了它。

相关内容