在无法让 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 服务是否正常工作之前就匆忙配置了它。