Nginx访问PHP目录文件返回404问题求助(附配置文件)
解决Nginx下/rcon/index.php的404错误
我来帮你排查这个困扰了你24小时的404问题,看了你的Nginx配置,主要有几个关键点需要调整:
问题分析
- PHP文件的根目录未指定:你的
location ~ \.php$块里没有设置root指令,Nginx不知道从哪个目录加载PHP文件,这是导致404的核心原因之一。 - PHP-FPM Socket路径可能有误:配置里写的是
unix:/var/run/php/php7.2fpm.sock,通常PHP-FPM的socket文件名格式是phpX.X-fpm.sock(比如php7.2-fpm.sock),少了横杠可能导致无法连接到PHP处理器。 - try_files指令逻辑混乱:你在
location /里把/rcon/index.php等路径直接写进去,这会干扰正常的路由匹配,应该让Nginx按规则自动查找文件。
解决方案
方案1:为PHP块添加根目录(推荐)
修改你的PHP处理块,添加root指令指向你的网站根目录,同时修复Socket路径:
location ~ \.php$ { root /home/ubuntu/staff/; # 指定PHP文件的根目录,和location /的root保持一致 include snippets/fastcgi-php.conf; # 修复Socket路径的横杠 fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; }
同时,简化location /的try_files,只保留必要的默认路由:
location / { root /home/ubuntu/staff/; try_files $uri $uri/ /index.html; }
方案2:为/rcon单独配置Location
如果希望/rcon路径有独立的规则,可以单独创建一个location块,专门处理这个目录下的静态文件和PHP:
location /rcon { root /home/ubuntu/staff/; # 确保/rcon文件夹在这个目录下 index index.php index.html; try_files $uri $uri/ /rcon/index.php; # 嵌套处理该目录下的PHP文件 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } # 保留原有的location /、/api、/fivem配置...
后续检查步骤
- 确认/rcon文件夹位置:确保
/home/ubuntu/staff/rcon/确实存在,并且index.php文件有正确的权限(比如www-data用户可读)。 - 测试Nginx配置:执行
sudo nginx -t检查配置是否有语法错误。 - 重启Nginx:如果配置测试通过,执行
sudo systemctl restart nginx生效。 - 检查PHP-FPM状态:确保PHP-FPM服务正在运行,执行
sudo systemctl status php7.2-fpm。
内容的提问来源于stack exchange,提问作者Gunsela
相关产品推荐
相关产品推荐

