我有一个非常常见的,但烦人的错误,古典:“文件未find”。 我有以下nginx.conf:
server { listen 80; server_name aperophp; root /home/gline/mysite/web; location = / { try_files @site @site; } location / { try_files $uri $uri/ @site; } location ~ \.php$ { return 404; } location @site { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param PATH_INFO $fastcgi_script_name; } }
但是我有这个文件:
$ ls -ld /home/gline/mysite/web/index.php -rw------- 1 gline gline 66 Jan 5 13:25 /home/gline/mysite/web/index.php
如果你有一些想法。
为了您的帮助,请提前致谢。
你应该检查,PHP的FPM可以阅读这个PHP文件,检查是否有
user = gline group = gline
在您的php-fpm conf文件关于池。
您的文件不能被PHP进程读取。
您可以看到脚本的权限只允许用户gline读取(或写入)文件,但默认情况下PHP运行在不同的用户ID(例如nobody或www-data )下。
要解决这个问题,使文件世界可读。 您可能还需要使包含的目录及其父目录可search。
chmod a+r /home/gline/mysite/web/index.php chmod a+x /home/gline/mysite/web chmod a+x /home/gline/mysite chmod a+x /home/gline
很多奇怪的事情发生在这个conf。
它正在返回404,因为你正在告诉它。 以.php结尾的任何内容都将匹配location ~ \.php$块的location ~ \.php$ 。
另外,为什么你有两个/位置块?
很难告诉你要从conf文件中获得什么,但这是一个非常标准的nginx / php conf:
server { listen 80; server_name aperophp; root /home/gline/mysite/web; location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; } }