localhost子域名Nginx部署WordPress遇File not found问题求助
解决Nginx + PHP-FPM的“Primary script unknown”错误
这个问题我踩过好几次坑了,核心就是Nginx没法把正确的脚本路径传给PHP-FPM,导致PHP找不到要执行的文件,浏览器就会返回“File not found”。结合你给出的日志和配置片段,咱们一步步来排查修复:
先搞懂错误本质
日志里的*Primary script unknown*意思很明确:PHP-FPM收到了Nginx转发的请求,但不知道要执行哪个PHP文件——说白了就是路径没传对。
最常见的配置问题(你的配置里大概率缺这些)
从你给的配置片段来看,你的server块缺少两个关键配置:
1. 必须指定网站根目录
首先要给server块加上root指令,告诉Nginx你的网站文件存在哪里:
server { listen 80; server_name wasob.localhost; # 替换成你实际的网站根目录,比如/var/www/wasob/public root /path/to/your/web/root; # 设置默认首页,优先找index.php index index.php index.html index.htm;
2. 正确配置FastCGI的脚本路径
处理PHP请求的location块里,一定要正确设置fastcgi_param SCRIPT_FILENAME,这是告诉PHP-FPM要执行的脚本完整路径:
# 匹配所有.php结尾的请求 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # 重点!用$document_root(就是上面的root目录)拼接请求的脚本路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 加载Nginx默认的FastCGI参数(比如请求头这些) include fastcgi_params; } }
这里要注意:绝对不能直接写死路径,必须用$document_root变量,不然换目录或者多站点的时候会出问题。
额外检查:文件权限
就算路径配置对了,如果Nginx或PHP-FPM的运行用户没权限读取文件,也会报错。可以用下面的命令调整权限(假设运行用户是www-data):
# 把目录和文件的所有者改成www-data chown -R www-data:www-data /path/to/your/web/root # 设置合理的读写权限 chmod -R 755 /path/to/your/web/root
最后重启服务生效
修改完配置后,一定要重启Nginx和PHP-FPM让配置生效:
sudo systemctl restart nginx # 不同PHP版本命令可能不一样,比如php7.4-fpm、php8.1-fpm sudo systemctl restart php-fpm
一般按照上面的步骤操作,这个错误就能解决了——毕竟大部分情况都是路径配置不对或者权限问题。
内容的提问来源于stack exchange,提问作者user3681312
相关产品推荐
相关产品推荐

