php 7.4网站打不开、空白页、502或500错误,主因是服务链路中断:需依次确认php-fpm进程真实运行(ps aux | grep php-fpm-74)、nginx转发配置匹配listen地址(fastcgi_pass与www.conf中listen严格一致)、网站目录属主为www且权限合理(chown -r www:www、chmod 644)、并开启display_errors=on定位真实报错。

PHP 7.4 部署到宝塔后网站打不开、空白页、502 或 500 错误,不是代码本身问题,而是服务链路中某一个环节断开——php-fpm 没跑起来、nginx 没转发过去、目录权限不对、或配置里还指着 PHP 8.x 的 socket 路径。
确认 PHP-FPM 进程是否真正在运行
宝塔界面上显示“PHP-7.4 正在运行”,不代表进程活着。很多情况下 php-fpm master 进程启动失败后自动退出,面板状态来不及刷新。
执行 ps aux | grep php-fpm-74,如果只看到 grep 进程本身,没有 php-fpm: master process,说明没起来。
进一步查原因:运行 systemctl status php-fpm-74,重点看最后一行的 Active: 状态和 Process: 行。若显示 failed 或 Permission denied,立刻执行 php-fpm -t -c /www/server/php/74/etc/php-fpm.conf 测试配置语法。
【listen 地址必须和 nginx fastcgi_pass 完全一致】。比如 php-fpm.d/www.conf 里写的是 listen = /tmp/php-cgi-74.sock,那 Nginx 配置里 fastcgi_pass 就不能写 127.0.0.1:9000,否则直接 502。
检查 Nginx 是否正确加载了 PHP 7.4 的转发规则
进宝塔 → 网站 → 对应站点 → 配置文件,找 location ~ \.php$ { 这一段。
方法一:看 include enable-php-74.conf; 这行是否存在。如果写的是 enable-php-80.conf 或根本没这行,Nginx 就不会把 .php 请求交给 PHP-FPM 处理。
方法二:手动核对 fastcgi_pass 值。它必须严格匹配 PHP 7.4 的 listen 地址——要么是 unix:/tmp/php-cgi-74.sock,要么是 127.0.0.1:9000(前提是 php-fpm.conf 里 listen 设为后者)。
改完配置后,必须点“保存”→ 再点“重载配置”。只点“重启 Nginx”不生效,因为旧配置还在内存里。
验证网站根目录权限与用户归属
第一步:执行 ls -ld /www/wwwroot/你的域名,确认输出第 3、4 列是 www www。如果是 root root 或 admin admin,PHP 进程就读不到文件。
第二步:执行 chown -R www:www /www/wwwroot/你的域名,强制统一属主。
第三步:检查关键文件可读性:ls -l /www/wwwroot/你的域名/index.php,权限至少要是 -rw-r--r--(即 644)。如果显示 ---------- 或 -rw-------,运行 chmod 644 /www/wwwroot/你的域名/index.php。
注意:不要给整个网站目录设 777,【chmod -R 777 /www/wwwroot/你的域名 是高危操作,会引发安全告警甚至被自动拦截】。
打开 PHP 错误提示,定位真实报错
白屏却不报错?大概率是 display_errors = Off 在起作用。
进宝塔 → 软件商店 → PHP-7.4 → 设置 → php.ini 配置修改:
① 找到 display_errors = Off,改成 display_errors = On;
② 找到 error_reporting = 行,改成 error_reporting = E_ALL;
③ 找到 log_errors = Off,改成 log_errors = On;
保存后,点击“重载配置”或“重启 PHP 服务”。再刷新网站,错误就会直接显示在页面上。
如果页面仍空白,去查日志:tail -n 20 /www/server/php/74/var/log/php-fpm.log,里面会有 Fatal error 的完整堆栈。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











