CentOS9下Yii2高级模板Nginx+PHP8.1部署报错排查求助
排查Nginx+PHP-FPM下"Primary script unknown"与权限拒绝问题的线索
1. 核心权限排查(针对Permission denied错误)
- 确认
/home/lamtab/xp-app-main/app/appadmin/web/index.php文件存在,执行以下命令查看文件权限:
确保Nginx运行用户(CentOS9默认是ls -l /home/lamtab/xp-app-main/app/appadmin/web/index.phpnginx)对该文件拥有读取权限(权限位包含r)。 - 检查目录遍历权限:Nginx需要对路径中的每一级目录拥有执行权限,用以下命令逐层查看:
每一级目录的权限应包含namei -l /home/lamtab/xp-app-main/app/appadmin/web/index.phpx(比如r-x),否则Nginx无法访问到index.php。 - 修复权限示例(谨慎操作,根据实际情况调整):
chmod -R 755 /home/lamtab/xp-app-main/app/appadmin/web chown -R nginx:nginx /home/lamtab/xp-app-main/app/appadmin/web
2. SELinux 规则检查(CentOS9 默认启用)
CentOS9默认开启SELinux,可能拦截Nginx访问用户目录下的文件:
- 临时关闭SELinux测试:
访问网站验证是否恢复正常,如果正常说明是SELinux规则问题。setenforce 0 - 设置正确的SELinux上下文并永久生效:
chcon -R -t httpd_sys_content_t /home/lamtab/xp-app-main/app/appadmin/web semanage fcontext -a -t httpd_sys_content_t "/home/lamtab/xp-app-main/app/appadmin/web(/.*)?" restorecon -Rv /home/lamtab/xp-app-main/app/appadmin/web
3. PHP-FPM 配置与Socket权限检查
- 查看PHP-FPM运行用户:打开
/etc/php-fpm.d/www.conf,确认user和group配置项,该用户需要对index.php拥有读取权限。 - 检查PHP-FPM Socket权限:
确保Nginx用户(ls -l /run/php-fpm/www.socknginx)有权限访问该Socket(比如所属组为nginx,权限为rw-rw----)。 - 修复Socket权限:修改
www.conf中的以下配置,然后重启PHP-FPM:
重启命令:listen.mode = 0660 listen.group = nginxsystemctl restart php-fpm
4. Nginx 配置验证
- 确认
root路径正确性:检查/home/lamtab/xp-app-main/app/appadmin/web是否确实是Yii2后台的Web根目录,index.php必须存在于该目录下。 - 验证FastCGI参数:确保
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name配置正确,避免路径拼接错误导致PHP无法找到脚本。 - 测试Nginx配置语法:
如果有语法错误,先修复后重启Nginx:nginx -tsystemctl restart nginx
5. 路径拼写与大小写检查
Linux系统路径区分大小写,确认配置中的路径与实际目录拼写、大小写完全一致,避免因大小写不匹配导致文件无法找到。
内容的提问来源于stack exchange,提问作者Lampros Tampourlos
相关产品推荐
相关产品推荐

