您现在的位置是:娱乐 >>正文
nginx php 404
娱乐9人已围观
简介打开浏览器,输入网址,回车。屏幕上蹦出一个白底黑字的“404 Not Found”,下面一行小字:nginx。你盯着这行字,心里清楚文件明明就在那儿——PHP文件躺在目录里,权限也给了,nginx配置 ...
打开浏览器,输入网址,回车。屏幕上蹦出一个白底黑字的“404 Not Found”,下面一行小字:nginx。你盯着这行字,心里清楚文件明明就在那儿——PHP文件躺在目录里,权限也给了,nginx配置里fastcgi_pass也指向了php-fpm的9000端口。可它就是404。
这事我遇到过不下十次。最离谱的一回,是帮朋友调一个WordPress站点。首页正常,后台wp-admin能进,唯独文章详情页全部404。他信誓旦旦说固定链接没改过,我登服务器一看,nginx的try_files写的是try_files $uri $uri/ =404;。问题就在这。WordPress的伪静态请求走的是index.php,但nginx拿到/2024/01/hello-world/这个URI,先去磁盘找对应目录,找不到,直接甩404,根本没给PHP解释的机会。
改法很简单,在location /里面加一段:try_files $uri $uri/ /index.php?$args;。重启nginx,文章页秒开。这个案例说明一个事:nginx的404和PHP的404是两套逻辑。nginx负责静态文件路由,PHP负责动态脚本执行。请求没进到PHP层面,nginx就先判了死刑。
另一种常见情况是PATH_INFO模式。比如ThinkPHP或者Laravel配了index.php/Home/Index/index这种URL。nginx默认不认PATH_INFO,需要显式配置fastcgi_split_path_info。少写这一行,nginx把/index.php/Home/Index/index当成一个不存在的文件路径,404没商量。我见过有人折腾一下午,最后发现是fastcgi_param PATH_INFO $fastcgi_path_info;这行被注释掉了。
权限问题也会伪装成404。nginx的worker进程用户是www-data,PHP文件属主是root,权限640。nginx能读到文件路径,但读不了内容?不对,这种情况通常报403。但有一种例外:如果open_basedir限制了PHP能访问的目录,而nginx把请求转给了php-fpm,php-fpm找不到文件,返回“File not found”,nginx再把这个错误包装成404返回给浏览器。你看到的是nginx的404页面,根子在PHP的open_basedir配置。
还有个小坑:index index.php index.html;这行指令。如果目录下同时存在index.html和index.php,nginx会优先返回index.html。有人改了PHP代码发现不生效,浏览器一直404或者显示旧页面,其实是index.html在捣乱。删掉它,或者调整顺序,问题消失。
说个具体排查步骤。先看nginx错误日志,tail -f /var/log/nginx/error.log。如果日志里写的是“open() failed (2: No such file or directory)”,那是路径问题。如果写的是“FastCGI sent in stderr: Primary script unknown”,那是php-fpm没找到SCRIPT_FILENAME,检查fastcgi_param那行。如果日志干净,啥也没有,那404可能是nginx的try_files或者rewrite规则直接返回的,跟PHP无关。
我自己的习惯是,遇到nginx+php的404,先curl -I看响应头。Server是nginx,没有X-Powered-By,说明请求压根没到PHP。然后去nginx配置里搜try_files和rewrite,八成能揪出元凶。PHP层面的404反而好办,框架路由没匹配上,开debug模式一目了然。
最后提一句,别迷信网上那些“万能nginx配置”。不同框架、不同URL模式、不同PHP版本,配置差异很大。搞懂fastcgi_pass、SCRIPT_FILENAME、try_files这三个东西的协作关系,比复制粘贴一百段配置都管用。404不是bug,是nginx在告诉你:它没找到该找的东西。你得告诉它去哪找。
Tags:
相关文章
国外有趣的网站
娱乐我去过最离谱的网站叫“Pointer Pointer”。它只做一件事——你随便点一下屏幕,它就给你一张照片,照片里永远有个人,手指正好指着你刚才点的那个位置。算法从图库里抓取匹配的图片,精准到像素级。 ...
【娱乐】
阅读更多abg欧博网站
娱乐打开abg欧博网站的首页,第一眼不会觉得它跟别的博彩平台有什么本质区别。深色底、金色字、轮播图里滚动着真人视讯和体育赛事的入口。但真正用上一段时间,会发现它的产品结构有点意思——不是把所有东西都堆在首 ...
【娱乐】
阅读更多服务器安全i春秋论坛
娱乐i春秋论坛的服务器被拖库了,这事儿在圈子里传开的时候,我正蹲在一个甲方机房里调防火墙策略。手机震个不停,群里有人甩了张截图,论坛首页挂着黑页,数据表结构被人扒得干干净净。说实话,第一反应不是震惊,是“ ...
【娱乐】
阅读更多