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

NGINX配置异常:PHP脚本被返回为文本而非执行

解决Nginx直接返回PHP源码不执行的问题

核心问题定位

你的Nginx配置中,location /\.php$的写法错误,这只会匹配路径**恰好是/.php**的请求,而非所有以.php结尾的请求。这导致大部分PHP请求都进入静态文件处理逻辑,直接返回源码。

修正后的配置方案

1. 调整PHP请求的location匹配规则

将原location块改为正则匹配,并优化root路径配置:

server {
    # 把root放在server块,统一指定网站根目录
    root /var/html/web;
    index index.php index.html index.htm;

    # 匹配所有以.php结尾的请求(区分大小写)
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        # 可选:防止Nginx转发不存在的PHP文件
        try_files $uri =404;
    }

    # 静态文件基础处理
    location / {
        try_files $uri $uri/ =404;
    }
}

2. 关键配置说明

  • 正则匹配~ \.php$:确保所有以.php结尾的请求都进入该location,交给php-fpm处理;若需要忽略大小写,可改用~* \.php$。
  • root放在server块:避免location内的root与server块root冲突,保证$document_root变量指向正确的网站根目录。
  • try_files $uri =404:若请求的PHP文件不存在,直接返回404,避免php-fpm处理不存在的文件引发错误。

验证步骤

  1. 保存配置后,测试Nginx配置语法:
nginx -t
  1. 若语法正确,重新加载Nginx:
systemctl reload nginx
  1. 再次访问PHP脚本,确认是否正常执行而非返回源码。

额外排查点

  • 确认PHP文件权限:确保/var/html/web下的PHP文件对php-fpm运行用户(通常为www-data)有可读权限。
  • 检查php-fpm日志:若问题仍存在,查看/var/log/php7.4-fpm.log,排查是否有文件找不到或权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:50:23