页面空白本质是nginx未正确将请求交给php或php因路径/参数/权限缺失而静默退出;需验证php是否运行、修正root指向public目录、补全script_filename等三行fastcgi_param、启用错误显示并查nginx与php错误日志。

Windows 下用 Nginx 1.31.6 搭配 PHP 8.0.30 出现页面空白,本质不是版本不兼容,而是 Nginx 未正确把请求“交到 PHP 手里”,或 PHP 收到后因路径、参数、权限等缺失而静默退出。问题集中在 FastCGI 协同环节,不是重装就能解决的。
确认 PHP 是否真在运行
新建一个 test.php,内容仅一行:
放在你配置的网站根目录(比如 D:/www/test.php),然后访问 http://localhost/test.php。
- 能显示 PHP 信息页 → PHP 解析器已启用,问题出在项目配置或代码逻辑
- 仍是空白或源码泄露(看到
<?php phpinfo(); ?>)→ Nginx 根本没把 .php 文件交给 PHP 处理,检查location ~ \.php$块是否生效、fastcgi_pass是否指向正确的 PHP-FPM 地址
修正 Nginx 的 root 和入口路径
ThinkPHP、Laravel 等现代框架要求 Web 服务器的 root 必须指向 public/ 目录,而非项目根目录。写错会导致自动加载失败、类找不到、直接白屏且无报错。
在你的站点配置(如 nginx/conf/vhosts.conf)中,找到对应 server 块,确保:
-
root D:/www/myapp/public;(末尾分号不能漏) - 不要写成
root D:/www/myapp;或root D:/www/myapp/public/(结尾斜杠多余,部分 Windows 版本会解析异常)
改完必须执行 nginx -s reload 生效。
重写 fastcgi_param 关键三行
Nginx 默认的 fastcgi_params 在 Windows + PHP 8.0 组合下常缺关键参数,尤其 SCRIPT_FILENAME 和 PATH_INFO,导致 PHP 找不到脚本或路由解析失败。
在 location ~ \.php$ { ... } 块内,**显式补全以下三行**(顺序不重要,但必须存在):
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param REQUEST_URI $request_uri;
同时确认已包含:include fastcgi.conf;(不是 fastcgi_params;fastcgi.conf 内含更完整定义)。
强制 PHP 显示错误并查日志
在出问题的 PHP 文件最开头(任何字符前),插入:
刷新页面 —— 若出现红色错误,按提示修复;若仍空白,说明错误发生在解析阶段(如语法错、BOM、短标签未启用)。
接着检查两个日志文件:
-
Nginx 错误日志:默认在
logs/error.log,搜索Primary script unknown(路径不对)、FastCGI sent in stderr(PHP 执行了但崩溃) -
PHP 错误日志:打开
php.ini,确认log_errors = On、error_log = D:/php/logs/php_error.log(路径需存在且 Nginx 进程有写权限)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











