“无指定输入文件”的真正解决方案.(nginx,fpm)

前端之家收集整理的这篇文章主要介绍了“无指定输入文件”的真正解决方案.(nginx,fpm)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这个问题的大多数答案是,设置fastcgi_param SCRIPT_FILENAME并且它会工作(斜体格式化被打破?!).

我已经设置了这个变量(正确),但它仍然显示错误而不是404页面,因为问题的根源在这里:

location ~ \.PHP${
            fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
            fastcgi_pass unix:/var/run/PHP5-fpm.sock;
            fastcgi_index index.PHP;
            include fastcgi_params;
    }

一个不存在的路径传递给PHP5-fpm,这将返回打印错误,该错误在日志中如下所示:

FastCGI sent in stderr:
"Unable to open primary script: ... (No such file or directory)"
while reading response header from upstream

因此,在行fastcgi_pass之前必须有一个条件来检查文件是否真的存在,或者,如果fpm工作者返回“找不到文件”,则引导Nginx返回404页面.

我怎样才能做到这一点?

最佳答案
使用try_files $uri = 404;第一!

location ~ \.PHP${
        try_files  $uri =404;
        fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
        fastcgi_pass unix:/var/run/PHP5-fpm.sock;
        fastcgi_index index.PHP;
        include fastcgi_params;
}

感谢http://nginxlibrary.com/resolving-no-input-file-specified-error/

猜你在找的Nginx相关文章