宝塔面板怎么开启错误显示
学完这篇,你能让宝塔面板下的网站在出错时把 PHP 报错信息直接显示出来,而不是只给一个白屏或 500,同时知道改完为什么不生效、怎么排查。
第一步:先确认你要开的是哪种「错误显示」
这件事有两条线,别搞混:一条是网站程序的 PHP 报错(最常见的白屏、500、空白页),另一条是宝塔面板自身的报错(面板操作时报错只给一句「出错了」)。绝大多数人问的是第一条,本篇主线讲它,面板自身的放在第六步。
第二步:改 php.ini,打开 display_errors
这一步做完,PHP 就允许把错误打到页面上了。打开宝塔面板 →【软件商店】→【已安装】→ 找到你站点在用的 PHP 版本(比如 PHP-7.4)→ 点右侧【设置】→ 左侧【配置修改】。在打开的 php.ini 编辑器里按 Ctrl+F 搜 display_errors,改成:
display_errors = On
error_reporting = E_ALL
log_errors = On
如果搜不到这三行,直接在文件末尾另起一行补上。点【保存】。
注意:宝塔里同一台服务器常常装了多个 PHP 版本,站点用的是哪个版本,就必须改哪个版本的 php.ini。在【网站】→ 站点 →【设置】→【网站目录】上方能看到当前 PHP 版本。
第三步:检查 php-fpm 配置有没有把设置覆盖掉
php.ini 属于「默认值」,php-fpm 的池配置属于「强制值」,后者优先级更高,会把你在 php.ini 里的改动压掉。回到 PHP-7.4 的【设置】页 → 左侧【FPM配置文件】,搜索 display_errors,如果看到这一行:
php_admin_flag[display_errors] = off
把它改成 on,或者直接删掉这一行;同时确认 php_admin_flag[log_errors] = on。保存。
第四步:检查站点目录的 .user.ini
宝塔会给每个网站根目录放一个 .user.ini(用于设置 open_basedir),它也能设定 display_errors。用宝塔【文件】进入网站根目录,勾选「显示隐藏文件」,打开 .user.ini,确认里面没有 display_errors = Off 这类语句;如果有,改掉或删掉。
注意:
.user.ini有缓存,修改后要等最多 5 分钟(user_ini.cache_ttl)或重启 PHP 才生效。这是很多人「改完没反应」的真实原因。
第五步:重启 PHP 并验证
在【软件商店】→【已安装】→ PHP-7.4 那一行点【重启】(也可以在【设置】页点【服务】→【重启】)。然后在网站根目录新建 t.php,内容写:
<?php
ini_set('display_errors', 1);
echo ini_get('display_errors');
trigger_error('测试报错', E_USER_WARNING);
浏览器访问 http://你的域名/t.php,页面输出 1 并显示「测试报错」就成功了。测完记得删掉这个文件。
如果还是白屏,同时打开【网站】→ 站点 →【设置】→【网站日志】看 error_log,PHP 致命错误通常记在 /www/wwwlogs/你的域名.error.log 里。
第六步:框架和面板自身的开关
- ThinkPHP:
.env或config/app.php里把app_debug设为true - Laravel:
.env里APP_DEBUG=true - WordPress:
wp-config.php里define('WP_DEBUG', true); - 宝塔面板自身报错:右上角头像 →【面板设置】,找到【调试模式】打开(部分版本叫「开发者模式」),开启后面板会显示详细错误堆栈
注意:
display_errors = On会把服务器绝对路径、数据库账号等暴露给访问者,只适合调试。上线前务必改回Off,把log_errors保留为On,靠日志排错。
小结
- PHP 报错显示的核心三行:
display_errors = On、error_reporting = E_ALL、log_errors = On - 改对 PHP 版本:多版本共存时,改站点实际使用的那个
- 优先级顺序:php-fpm 池配置 >
.user.ini> php.ini,逐层检查 - 改完必须重启 PHP,
.user.ini还有缓存延迟 - 框架有自己的 debug 开关,改完 php.ini 可能还要再开一次
- 调试完成就关掉 display_errors,用错误日志代替
原文链接:https://www.gj0.com/thread-847.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。