问题描述
在配置nginx时,浏览器访问html文件正常 ,访问php文件老是显示404;
查询nginx的错误日志 /usr/local/nginx/logs/error.log文件后,发现报下面的错误:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.210.1,server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.210.130"
解决思路
第一步:首先看一下是不是权限的问题
nginx 配置的用户与 php-fpm的用户保持一致。
1.修改nginx.conf 文件 第一行 user www www
2.修改/usr/local/php/etc/php-fpm.d/www.conf
user = www
group = www
第二步:检查nginx配置,修改配置
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
修改为
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注:设置一个文件名,该文件名将附加在以斜杠结尾的 URI 之后,在$fastcgi_script_name变量的值中。例如,使用这些设置
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
其含义为:对于“/page.php”请求, SCRIPT_FILENAME参数将等于“ /home/www/scripts/php/page.php”,
对于“/”请求,它将等于“ /home/www/scripts/php/index.php”。
第三步:重启nginx 与 php-fpm ,再次访问,问题完美解决
参考文档:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#example
#############################################################################
其他问题:
-
安装后找不到php.ini 文件
此时需要去源码安装包中找到 php.ini.development 然后复制到指定位置 -
查看php.ini 文件位置
方式1: 执行 php --ini 查看
方式2: phpinfo(); 打印出来查看