Nginx整合PHP中"file not found" & "Primary script unknown" 问题解决

最近使用docker构建lnmp环境,遇到了平时没有遇到过的一个nginx整合php的问题,这里记录一下。

问题描述

nginx配置好php之后,访问目录下的一个php文件,显示 file not found

解决问题过程

首先去看nginx日志,默认的在/var/log/nginx/ 目录下,重点看error.log文件。我的日志中显示:

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,

根据这个结果,我们很难分析出来是什么地方出了问题。这时候可以去看看php的日志。默认情况下php没有开启访问日志功能,需要我们自己来开启。
在php-fpm.d/www.conf文件中,找到access.log配置,将access.log配置添加进来

access.log = /var/log/$pool.access.log

然后重启php-fpm服务。

这时候去网页继续请求php文件,查看配置的php日志。
你会看到access日志类似于

- -  12/Nov/2018:19:02:11 +0000 "GET /index.php" 404
- -  12/Nov/2018:19:02:37 +0000 "GET /index.php" 404
  • 如果"GET /"后面接的不是正确的php文件名,那么请检查你的nginx配置
  • 如果"GET /"后面接的是404,这意味着nginx正确的将请求传达给了php-fpm,但是没能访问到相应的文件,可以检查一下用户权限路径了。

最后我发现是我的权限不足导致了该问题。

总结

出现"File Not Found"的问题,一般来说nginx和fpm通信应该是正常的,不然不会说“File Not Found”。从PHP日志也能看到,不然不会产生PHP日志。

遇到此类问题时,与其盲目搜索答案,不如从日志起步进行分析。最好的方式还是打日志!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hober.z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值