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

WordPress(PHP-FPM)+Nginx部署异常:无法加载PHP内容但可提供HTML

排查WordPress + Nginx(K8s部署)PHP内容无法加载的问题

先看你给出的日志和配置,核心现象是Nginx能正常返回HTML,但PHP请求即便到达了php-fpm,也没有正常返回内容——从php-fpm日志里的"- "能看出来,连请求的URI都没正确传递过去,这是关键线索。下面是几个必须优先检查的点:

1. 补全Nginx PHP Location里的SCRIPT_FILENAME配置

你的wordpress.conf里的PHP location块只写了include fastcgi_params;,但默认的fastcgi_params通常不包含SCRIPT_FILENAME,这是php-fpm识别要执行的PHP文件的核心参数。修改这个location块:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    limit_req zone=one burst=12 nodelay;
    include fastcgi_params;
    fastcgi_pass php;
    # 新增这两行,指定PHP脚本的真实路径
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

没有这个参数的话,php-fpm根本不知道要执行哪个文件,自然不会返回有效内容。

2. 确认Nginx和PHP-FPM的文件权限匹配

在K8s部署里,你的Nginx容器和PHP-FPM容器都挂载了同一个wordpress-persistent-storage卷到/var/www/html:

  • WordPress官方镜像(wordpress:4.9-php7.2-fpm)的运行用户是www-data,UID为33
  • Nginx官方镜像(nginx:1.14)的www-data UID也是33,权限主体是匹配的,但要确认挂载的存储卷文件所有者是www-data
  • 可以分别进入两个容器执行ls -l /var/www/html,确保文件权限允许www-data读写,否则php-fpm无法读取脚本文件

3. 验证cgi.fix_pathinfo是否真的生效

你在配置注释里提到要设置cgi.fix_pathinfo = 0;,但得确认这个配置已经被正确加载:

  • 进入PHP-FPM容器,执行php -i | grep cgi.fix_pathinfo,看输出是否为cgi.fix_pathinfo => 0 => 0
  • 如果你的php ConfigMap里没加这个配置,需要补充:
# php ConfigMap的内容
cgi.fix_pathinfo = 0

这个参数如果设为1,会导致php-fpm尝试解析不存在的文件,可能引发空白返回的问题。

4. 查看更详细的错误日志

目前的日志信息不够,建议开启更详细的日志排查:

  • 修改php-fpm的配置(通过php ConfigMap),设置error_log = /var/log/php-fpm.log,并把log_level = notice改成log_level = debug
  • 同时查看Nginx的error.log(路径/var/log/nginx/error.log),里面可能会有fastcgi通信相关的错误细节

按照上面的步骤排查,最可能的问题是缺少SCRIPT_FILENAME参数,补全之后应该就能正常加载PHP内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:13