php-fpm+php 出现 Primary script unknown 问题分析和解决方案

环境 linux、centos7.x、php5.6

第一次配置Nginx + PHP + PHP-fpm 等组合服务的时候,Nginx日志文件出现的问题 Primary script unknown

通过查阅一些文档和网络搜索,了解到的原因有如下几点:

当前请求的php文件,确实不存在

这个原因很容易确认,一般是在网站根目录(也就是nginx.conf里面的root配置)确认是否有请求的xxxx.php文件

nginx.conf配置文件有错误

由于请求是转发给php-fpm处理,因此在nginx.conf要正确配置相关的内容,如

1
2
3
4
5
6
7
8
location  ~ \.php$ {
root /root/www/php_ci_test/wepractice/web; #..php....
include fastcgi_params;

fastcgi_pass 127.0.0.1:9000; #php-fpm......9000
fastcgi_index index.html;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

第1行 代表适配所有.php后缀的请求
第2行 配置php跟路径
第3行 加载fastcgi相关配置
第5行 nginx转发的下行server地址,也就是php-fpm服务地址
第7行 配置SCRIPT_FILENAME $document_root$fastcgi_script_name,这项非常重要,$document_root代表上面的root项, $fastcgi_script_name是我们请求的php文件名

文件权限问题

文件权限问题往往是很多问题的根本原因

如果确认上面两个原因,都不是问题的原因,那就得看最后一个,文件权限问题了

一般情况下php文件都需要执行权限

假设我们网站根路径是 /var/www

那尝试 chmod -R 777 /var 或者 chmod -R 777 /var/www

1
[me@VM_0_14_centos ~]# chmod -R 777 /var
1
[me@VM_0_14_centos ~]# chmod -R 777 /var/www
坚持原创技术分享,谢谢鼓励我继续创作!