PHP 的错误日志存放在哪里?

PHP 错误日志位置取决于运行方式:Apache 模块模式在 /var/log/apache2/,cPanel 在 /usr/local/apache/logs/error_log,也可在 php.ini 用 error_log 自定义。本文给出定位方法。

最佳实践
PHP 的错误日志存放在哪里?封面

一句话答案:PHP 错误日志的位置取决于运行方式——作为 Apache 模块运行时通常随 Apache 写在 /var/log/apache2/(如 error.log);共享主机常在站点根目录的 log 子目录;cPanel 环境主日志在 /usr/local/apache/logs/error_log;也可用 php.inierror_log 指令指定任意路径。

按运行方式对号入座

运行方式 常见日志位置
Apache 模块(mod_php) /var/log/apache2/error_log 或站点 vhost 配置的错误日志
PHP-FPM /var/log/php-fpm/ 或 php-fpm.conf 中 error_log 指定处
cPanel 主机 /usr/local/apache/logs/error_log 及每个站点的 error_log
CLI 命令行 默认输出到终端 stderr

自定义位置:php.ini

log_errors = On
error_log = /var/log/php-scripts.log

确保 PHP 进程对该路径有写权限。改完重启 Apache 或 PHP-FPM 生效。

最可靠的定位方法:问 PHP 自己

<?php phpinfo(); ?>

在浏览器打开后搜索 error_log,看到的 Loaded Configuration File 与 error_log 值就是当前生效配置。命令行等价写法:

php -i | grep error_log
php --ini   # 查看加载了哪些 ini 文件

注意 Web 模式与 CLI 模式可能加载不同的 php.ini。

应用级日志

框架(Laravel、CodeIgniter、ThinkPHP 等)还有自己的应用日志,如 Laravel 在 storage/logs/laravel.log,与 PHP 错误日志是两回事,排查问题时两边都要看。

观测云对照

PHP 应用统一采集。 用 DataKit 采集 PHP-FPM 错误日志和框架应用日志,配合 Pipeline 做解析;如果是容器化部署,DataKit 直接按容器采集 stdout 日志,不必关心日志落在哪个文件路径。

常见问题(FAQ)

Q:phpinfo() 里 error_log 显示 no value 怎么办?
A:表示未设置,错误会走 SAPI 默认通道(Web 模式写进 Web 服务器错误日志,CLI 输出到 stderr)。

Q:开了 log_errors 还是没有日志?
A:检查 error_reporting 级别是否包含想看的错误类型,以及目标文件对 PHP 进程用户是否可写。

Q:生产环境该用 display_errors 吗?
A:不该。生产环境 display_errors = Offlog_errors = On,错误进日志而不是页面。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台