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

Nginx与PHP配置异常:$_SERVER['PHP_SELF']为空求助

解决Nginx+PHP环境下$_SERVER['PHP_SELF']为空的问题

从你提供的环境信息和$_SERVER输出来看,问题出在Nginx与PHP-FPM的参数传递配置上——PHP_SELF是PHP基于CGI环境变量SCRIPT_NAME和PATH_INFO生成的,当这两个变量没有被正确传递给PHP时,就会出现PHP_SELF为空的情况。下面是具体的排查和修复步骤:

1. 检查站点Nginx配置(关键!)

你只提供了全局nginx.conf,但问题大概率出在站点级配置文件(/etc/nginx/sites-enabled/下的对应域名配置)的PHP处理块中。确保你的PHP location配置包含正确的FastCGI参数传递:

server {
    listen 443 ssl;
    server_name cumta.morhaviv.com www.cumta.morhaviv.com;
    root /var/www/morhaviv.com/public_html/cumta;
    index index.php index.html;

    # SSL配置(根据你的实际证书路径调整)
    ssl_certificate /path/to/your/ssl/cert.pem;
    ssl_certificate_key /path/to/your/ssl/key.pem;

    location / {
        try_files $uri $uri/ =404;
    }

    # 处理PHP请求的核心配置
    location ~ \.php$ {
        # 引入Ubuntu默认的FastCGI PHP配置片段(包含基础参数)
        include snippets/fastcgi-php.conf;
        # 连接PHP-FPM(根据你的FPM套接字路径调整,Ubuntu 18.04默认是这个)
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        # 引入全局FastCGI参数
        include fastcgi_params;
        # 强制指定脚本文件名,确保PHP能正确识别当前执行的脚本
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

重点注意:SCRIPT_FILENAME的设置必须准确,它是PHP识别脚本路径的核心变量,错误的路径会导致PHP_SELF无法生成。

2. 检查PHP-FPM的cgi.fix_pathinfo配置

编辑PHP-FPM的配置文件/etc/php/7.2/fpm/php.ini,找到以下配置项并确保它的值为1:

cgi.fix_pathinfo=1

这个参数控制PHP是否修正CGI模式下的路径信息,设为1才能让PHP正确解析SCRIPT_NAME和PATH_INFO来生成PHP_SELF。

3. 重启服务生效

修改配置后,需要重启PHP-FPM和Nginx服务:

# 重启PHP-FPM
sudo systemctl restart php7.2-fpm
# 重启Nginx
sudo systemctl restart nginx

验证修复

再次访问你的test.php,执行print_r($_SERVER),此时PHP_SELF应该会显示为/css/test.php,和SCRIPT_NAME的值一致(因为你的PATH_INFO为空)。

如果问题仍然存在,可以补充提供你的站点Nginx配置文件内容,我会进一步帮你排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:26:54