Windows Nginx1.30.5 整合 PHP7.4.33 访问 php 文件下载不解析

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 25 浏览 0 回复
核心问题是Nginx未将.php请求转发给PHP-CGI处理;需确认php-cgi.exe -b 127.0.0.1:9000已运行、location ~ .php$块含fastcgi_pass、SCRIPT_FILENAME等关键参数,root路径用正斜杠绝对路径,且php.ini中cgi.fix_pathinfo=1。

windows nginx1.30.5 整合 php7.4.33 访问 php 文件下载不解析

PHP 文件在 Windows 下被 Nginx 下载而非解析,核心问题只有一个:Nginx 没把 .php 请求转给 PHP 处理。这不是 PHP 没装好,而是转发链断了——从 Nginx 配置、PHP 启动方式,到路径和参数匹配,每环都得对上。

确认 PHP-CGI 正在监听 9000 端口

Windows 下 PHP 通常以 CGI 模式运行(非 PHP-FPM),需手动启动并绑定端口:

  • 打开命令行,进入 PHP 安装目录(如 C:\php),执行:
    php-cgi.exe -b 127.0.0.1:9000
  • 不要关闭该窗口,它就是 PHP 的“服务进程”;可配合脚本后台运行,但首次调试务必保持窗口可见
  • 验证是否生效:运行 netstat -ano | findstr :9000,应看到 LISTENING 状态及对应 PID

检查 Nginx 配置中 location ~ \.php$ 块是否完整

在 nginx.conf 的 server 块内,必须有且仅有一段匹配 PHP 的配置,常见错误是漏参数或路径硬编码:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • 确保包含以下关键指令(顺序不重要,但缺一不可):
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  • $document_root 必须与 location / 中的 root 值一致(例如 root C:/nginx/html;),不能写成 C:\nginx\html(反斜杠在 Nginx 中会出错)
  • 避免使用 root html; 这类相对路径,Windows 下建议写绝对路径并统一用正斜杠

验证 php.ini 关键项已启用

PHP-CGI 对配置更敏感,尤其以下两项直接影响能否接收并执行请求:

立即学习“PHP免费学习笔记(深入)”;

  • 打开 php.ini,确认:
    cgi.fix_pathinfo=1(必须为 1,否则 SCRIPT_FILENAME 解析失败)
  • 检查扩展是否启用,例如:
    extension_dir = "ext"(路径要存在)
    extension=php_openssl.dll(至少保证基础扩展不报错)
  • 时区设置建议补上:
    date.timezone = "Asia/Shanghai",避免日志中大量警告干扰判断

测试与排查顺序不能乱

每改一处,必须按顺序验证,跳步容易掩盖真实问题:

  • 先访问一个纯 HTML 文件(如 test.html),确认 Nginx 本身工作正常
  • 再放一个 index.php(内容仅 ),刷新页面看是下载、报错还是输出文本
  • 查看 logs/error.log,重点搜 connect refused(PHP 未监听)、no input file(SCRIPT_FILENAME 路径错)、Primary script unknown(文件不存在或权限问题)
  • 临时在 location ~ \.php$ 中加一行:
    error_log logs/php-debug.log notice;,单独捕获 PHP 相关日志
评论0
回复 · 0
还没有回复
微信客服 微信客服 QQ官方交流群 QQ官方交流群