Nginx + PHP-fpm File not found.问题解决记录

博客内容讲述了在遇到Nginx返回404 Not Found错误,且错误信息显示由PHP-fpm处理时,作者通过检查文件权限、Nginx配置中的user和group,以及PHP-fpm的设置,最终解决了'File not found.'的问题。涉及到的解决方案包括修改Nginx静态文件root目录的权限,调整Nginx和PHP-fpm的配置文件,并确保FastCGI服务正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象确认:

打开浏览器的开发者工具,查看请求信息

HTTP/1.1 404 Not Found

Server: nginx/1.11.10

Date: Fri, 20 Apr 2018 08:10:13 GMT

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

X-Powered-By: PHP/5.6.30

说明结果是由FastCGI返回的。


问题原因:

估计是跟权限有关系


相同的配置,使用以下两个: 

/opt/local/share/nginx/html  
/opt/local/share/nginx/html/php

目录都可以,但使用: 

/Users/xxx/Downloads/workForder</
<think>好的,我现在要解决用户遇到的Nginx返回'File not found.'错误的问题。根据用户提供的引用内容,这个问题通常与配置文件的路径设置有关。首先,我需要回忆一下Nginx的工作原理,特别是处理PHP请求时的流程。Nginx本身不能解析PHP,它需要将PHP请求转发给php-fpm处理。如果php-fpm找不到对应的文件,就会返回这个错误。 接下来,我需要按照用户提供的引用中的信息,逐步排查可能的配置错误。首先应该检查nginx.conf或者站点配置文件中的root路径是否正确。用户提到的引用[1]、[3]、[4]、[5]都提到了root路径的重要性。例如,引用[1]指出root路径不正确会导致php-fpm找不到文件,引用[3]提到default.conf中的root和PHP解析部分的配置可能有问题,引用[4]和[5]则给出了具体的配置示例。 然后,我应该考虑fastcgi_param中的SCRIPT_FILENAME参数是否正确设置。引用[2]和[4]都提到SCRIPT_FILENAME需要正确的路径,通常包括root和$fastcgi_script_name的组合。如果这里配置错误,php-fpm就会收到错误的文件路径,导致文件找不到。 另外,用户提到的引用[5]中的配置示例显示,root目录设置为/Library/WebServer/Documents/,并且location块中的index包含index.php,这提示我需要检查用户的root是否指向正确的网站目录,以及index是否包含index.php。 可能的步骤应该是:首先确认root路径是否正确,是否指向存放PHP文件的目录;其次检查fastcgi_param中的SCRIPT_FILENAME是否正确拼接了root和脚本名称;然后检查文件权限,确保Nginxphp-fpm的进程用户有权限访问这些文件;最后,确认php-fpm是否正常运行,配置是否正确。 同时,用户可能没有提到但需要注意的点包括:SELinux或AppArmor的安全策略是否阻止了Nginx访问文件,文件路径中是否存在符号链接问题,或者PHP文件本身是否存在语法错误导致无法执行。不过根据提供的引用,主要问题还是在配置路径上,所以应该优先检查这些方面。 最后,总结解决方案时需要分步骤说明,并可能给出具体的配置示例,比如如何正确设置root和SCRIPT_FILENAME,如何检查权限,如何重启服务等。确保用户能够一步步跟随操作,验证每个步骤是否解决问题。</think>### Nginx显示'File not found.'错误解决方案 #### 第一步:检查根目录(root)配置 在Nginx配置文件(如`/etc/nginx/conf.d/default.conf`或站点配置文件)中: ```nginx server { root /path/to/your/webroot; # 必须与实际文件存储路径完全一致 location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 关键参数 fastcgi_pass 127.0.0.1:9000; } } ``` * 验证`root`路径是否包含目标PHP文件[^1][^3][^5] * 使用绝对路径避免相对路径错误,例如: ```nginx root /usr/share/nginx/html; # 正确示例 ``` #### 第二步:确认SCRIPT_FILENAME参数 PHP解析配置中必须包含正确的路径拼接: ```nginx fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 标准配置格式[^2][^4] ``` * 错误示例会导致路径丢失: ```nginx fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # 缺少根目录 ``` #### 第三步:验证文件系统权限 1. 检查Nginx进程用户(通常为`www-data`或`nginx`) 2. 授予访问权限: ```bash chmod 755 /path/to/webroot chown -R nginx:nginx /path/to/webroot # 根据实际用户组调整 ``` #### 第四步:检查PHP-FPM配置 1. 确认php-fpm监听地址与Nginx配置一致: ```ini ; /etc/php-fpm.d/www.conf listen = 127.0.0.1:9000 # 需与nginx的fastcgi_pass匹配 ``` 2. 重启服务验证配置: ```bash systemctl restart nginx php-fpm ``` #### 第五步:调试排查(进阶) 1.php-fpm配置中开启日志: ```ini catch_workers_output = yes php_admin_flag[log_errors] = on ``` 2. 检查Nginx错误日志: ```bash tail -f /var/log/nginx/error.log ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值