如何在 Linux 中设置 PHP 的错误报告级别

林见深
林见深
发布时间:2026-08-23| 69人浏览过
原创

前言

在 Linux 服务器上排查 PHP 报错时,很多问题并不是代码本身,而是错误报告级别没有按预期工作:要么该显示的不显示,要么线上环境暴露了过多细节。处理这件事的关键并不复杂,核心就是找到当前生效的 php.ini,修改 error_reporting,再按运行方式重启对应服务。下面按实际操作顺序展开,分别说明 Apache 和 PHP-FPM 的配置路径、常见错误级别的区别,以及改完后如何确认设置已经生效。

在 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 之后,找到这一行:

展示 Apache 与 PHP-FPM 两种部署方式下 php.ini 路径和重启命令差异的白底信息图
Apache 与 PHP-FPM 的配置位置同样是修改 PHP 错误报告级别,Apache 与 PHP-FPM。
error_reporting = E_ALL

这就是 PHP 错误报告级别的控制项。默认情况下,E_ALL 表示报告所有错误和警告,通常更适合开发和调试阶段,因为它会尽可能暴露问题,包括通知和编码规范相关信息。

如果你的目标是减少输出内容,可以直接把这一行改成所需级别。例如,只显示错误和警告:

error_reporting = E_ERROR | E_WARNING

多个级别之间通过竖线 | 连接,表示同时启用多个选项。

常见错误级别分别代表什么

在实际使用中,是否要保留全部报错,取决于当前环境是开发、测试还是生产。下面这几个级别最常见:

展示 PHP 常见错误报告级别及适用场景的白底信息图
PHP 错误级别怎么选不同错误级别覆盖的信息范围不同,开发环境与生产环境的选择重点也不一样。
  • 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 错误报告级别并不复杂,熟悉之后通常几分钟内就能完成。关键不在“怎么改”,而在“改的是不是当前生效的配置”和“改完有没有重启正确的服务”。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。