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

Ubuntu环境下Nginx无法执行PHP文件问题求助

解决Nginx无法执行PHP文件的问题

刚切换完部署环境就遇到PHP解析的坑,太懂这种头疼的感觉了!结合你给出的配置片段和场景,我整理了几个核心排查点和修复方案:

1. 补全SCRIPT_FILENAME配置(最直接的问题)

你给出的配置里fastcgi_param SCRIPT_FILENAME $document_roo...明显没写完,这是Nginx把PHP脚本路径传递给php-fpm的核心参数,必须补全正确:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

注意要把这个参数放在fastcgi_pass之后,确保php-fpm能拿到准确的脚本路径。

2. 检查php-fpm Socket的权限

你配置的Socket路径是unix:/run/php/php7.0-fpm.sock,得确认两件事:

  • 这个Socket文件真实存在:执行ls -l /run/php/php7.0-fpm.sock验证
  • Nginx进程用户(一般是www-data)有访问权限:执行ls -l /run/php/看Socket的所属组,确保www-data在组内,或者直接调整权限:
sudo chown www-data:www-data /run/php/php7.0-fpm.sock
sudo chmod 660 /run/php/php7.0-fpm.sock

改完后重启php-fpm:sudo systemctl restart php7.0-fpm

3. 别漏了HTTPS Server块的PHP配置

你当前的Server块是把HTTP请求重定向到HTTPS,但你没给出HTTPS的Server配置啊!所有实际请求都会转到HTTPS块,如果这个块里没配置PHP解析规则,自然没法执行PHP。

给你个HTTPS Server块的完整参考示例:

server {
    listen 443 ssl;
    server_name himeki.net;

    # 替换成你的SSL证书路径
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/key.pem;

    root /home/wwwroot;
    index index.html index.php index.htm;

    # 静态文件直接返回,提升性能
    location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
        expires 30d;
        access_log off;
    }

    # PHP解析核心规则
    location ~ \.php$ {
        try_files $uri =404; # 防止脚本路径遍历攻击
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params; # 引入默认的fastcgi参数集合
    }
}

4. 核对php-fpm的监听配置

打开php-fpm的池配置文件(通常在/etc/php/7.0/fpm/pool.d/www.conf),确保监听设置和Nginx配置一致:

listen = /run/php/php7.0-fpm.sock

如果这里配置的是TCP端口(比如listen = 127.0.0.1:9000),那Nginx里的fastcgi_pass也要改成127.0.0.1:9000。

5. 验证PHP文件的权限

确保你的PHP文件(比如/home/wwwroot/index.php)允许Nginx/php-fpm读取:

sudo chown www-data:www-data /home/wwwroot/*.php
sudo chmod 644 /home/wwwroot/*.php

最后一步:重启服务

修改完所有配置后,记得重启Nginx和php-fpm让配置生效:

sudo systemctl restart nginx
sudo systemctl restart php7.0-fpm

如果还是不行,直接看错误日志找线索:

  • Nginx错误日志:/var/log/nginx/error.log
  • php-fpm错误日志:/var/log/php/7.0/fpm/error.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:29:51