You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx单域名PHP文件被下载而非执行的故障排查求助

问题诊断与解决方案

PHP文件被浏览器当作下载文件,本质是Nginx未将请求转发至PHP-FPM处理,结合你的环境,按以下步骤排查:

1. 验证Nginx配置有效性

先检查配置语法是否正确,避免因语法错误导致Nginx未加载domain2的server块:

nginx -t

若输出报错,根据提示修复配置(比如检查括号、分号是否遗漏,注释格式是否正确)。同时确认domain2.conf已通过软链接放入/etc/nginx/sites-enabled/目录(Nginx默认仅加载该目录下的配置文件)。

2. 检查文件路径与权限

  • 确认站点根目录存在且权限正确:
# 检查目录是否存在
ls -ld /usr/share/nginx/html/domain2.com
# 设置正确权限(若权限不符)
chown -R www-data:www-data /usr/share/nginx/html/domain2.com
  • 验证PHP-FPM socket的访问权限:
ls -l /run/php/php7.4-fpm.sock

正常权限应为rw-rw---- www-data www-data,若不符,编辑/etc/php/7.4/fpm/pool.d/www.conf,修改listen.mode = 0660,然后重启PHP-FPM:

systemctl restart php7.4-fpm

3. 优化domain2的PHP处理配置

Debian/Ubuntu提供了预配置的fastcgi-php.conf片段,比手动编写更可靠,替换domain2.conf中的PHP location块:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}

该片段已包含fastcgi_index和SCRIPT_FILENAME的正确设置,避免手动写路径出错。修改后重启Nginx:

systemctl restart nginx

4. 通过日志定位深层问题

查看domain2的错误日志,获取具体报错信息:

tail -f /var/log/nginx/domain2_error.log
  • 若出现"no such file or directory":说明SCRIPT_FILENAME指定的文件路径错误,或文件不存在;
  • 若出现权限相关错误:说明PHP-FPM进程无法读取站点文件,需调整目录/文件权限。

内容的提问来源于stack exchange,提问作者Matthai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:25:19