在 Linux 服务器上排查 PHP 报错时,很多问题并不是代码本身,而是错误报告级别没有按预期工作:要么该显示的不显示,要么线上环境暴露了过多细节。处理这件事的关键并不复杂,核心就是找到当前生效的 php.ini,修改 error_reporting,再按运行方式重启对应服务。
下面按实际操作顺序展开,分别说明 Apache 和 PHP-FPM 的配置路径、常见错误级别的区别,以及改完后如何确认设置已经生效。
先确认要改的是哪个 php.ini
在 Linux 环境里,PHP 的错误报告级别通常通过 php.ini 控制。第一步是用终端打开对应版本、对应运行方式下的配置文件。
如果你使用 Apache,可以这样打开:
sudo nano /etc/php/版本号/apache2/php.ini例如 PHP 7.4:
sudo nano /etc/php/7.4/apache2/php.ini如果你使用的是 PHP-FPM,而不是 Apache,则路径中的 apache2 要改成 fpm:
sudo nano /etc/php/版本号/fpm/php.ini这里的“版本号”必须替换成实际使用的 PHP 版本,否则即使改了文件,也可能不是当前环境真正加载的配置。
修改 error_reporting 参数
打开 php.ini 之后,找到这一行:

error_reporting = E_ALL这就是 PHP 错误报告级别的控制项。默认情况下,E_ALL 表示报告所有错误和警告,通常更适合开发和调试阶段,因为它会尽可能暴露问题,包括通知和编码规范相关信息。
如果你的目标是减少输出内容,可以直接把这一行改成所需级别。例如,只显示错误和警告:
error_reporting = E_ERROR | E_WARNING多个级别之间通过竖线 | 连接,表示同时启用多个选项。
常见错误级别分别代表什么
在实际使用中,是否要保留全部报错,取决于当前环境是开发、测试还是生产。下面这几个级别最常见:

E_ALL:报告所有错误和警告,开发阶段最常用。E_ERROR:只报告致命错误,例如会导致脚本终止的运行时错误。E_WARNING:报告警告,但脚本会继续执行。E_NOTICE:报告通知,例如未定义变量这类提示性问题。E_STRICT:报告编码标准问题,适合希望代码风格更规范的场景。
如果你只是为了快速排查线上故障,往往会先保留更关键的级别;如果是本地开发环境,通常更适合使用 E_ALL,尽早把潜在问题暴露出来。
保存后重启服务才能生效
修改完成后,保存并退出编辑器。若使用 nano,可按 Ctrl + X,再按 Y 确认,最后按 Enter 退出。
接下来最关键的一步,是重启对应服务,否则新的错误报告级别通常不会生效。
如果你使用 Apache,执行:
sudo systemctl restart apache2如果你使用 PHP-FPM,执行:
sudo systemctl restart php版本号-fpm例如 PHP 7.4:
sudo systemctl restart php7.4-fpm很多“明明改了配置却没效果”的情况,问题就出在这一步没有做,或者重启了错误的服务。
改完后没生效,优先检查这几点
如果修改后发现某些错误仍然没有显示,或者输出内容依然过多,通常先从以下几个方向排查:
1. 配置文件路径是否对应当前运行方式
Apache 与 PHP-FPM 使用的 php.ini 路径不同,改错文件是最常见的问题之一。
2. PHP 版本号是否写对
路径和服务名里的“版本号”必须与当前安装并实际运行的 PHP 版本一致,例如 7.4。
3. 服务是否已经重启
只保存 php.ini 不够,必须重启 apache2 或对应版本的 php-fpm 服务。
4. 当前环境是否真的适合该级别
E_ALL 适合开发调试;如果是线上环境,通常需要更谨慎,避免把过多内部信息直接暴露给访问者。
整体来看,在 Linux 中设置 PHP 错误报告级别并不复杂,熟悉之后通常几分钟内就能完成。关键不在“怎么改”,而在“改的是不是当前生效的配置”和“改完有没有重启正确的服务”。













