很多开发者遇到PHP日志警告时,往往会先慌一下——其实只要按步骤来,处理起来并不复杂。下面就把这套流程拆开来讲,每一步都带着实操细节,希望能帮你少走弯路。
Ubuntu PHP日志出现警告的处理步骤
1. 查看PHP日志定位问题
遇到警告,第一件事当然是找到日志到底在哪儿。Ubuntu下,PHP日志的位置取决于你用的是哪种Web服务器:

- Apache:日志通常蹲在
/var/log/apache2/error.log; - Nginx:日志一般藏在
/var/log/nginx/error.log; - PHP-FPM:如果用的是PHP-FPM,日志可能跑到
/var/log/php7.x-fpm.log里了(x换成你的版本号,比如7.4、8.0)。
然后,用下面这条命令实时盯着日志(以Apache为例):
sudo tail -f /var/log/apache2/error.log
日志里会清楚告诉你警告的类型(Deprecated、Notice、Warning),发生在哪个文件的哪一行,以及具体的描述信息。这就是解决问题的核心依据。
2. 根据警告类型针对性解决
不同类型的警告,处理方式差别很大,别一概而论:
- Deprecated(已弃用):表示你用的某个函数或特性在未来版本里可能被移除,比如
session_register()。这时候去PHP官方文档翻一翻,换成推荐的替代方案就行,比如用$_SESSION替代session_register()。 - Notice(通知):属于“意料之外但不会打断脚本”的情况,比如访问一个未定义的数组索引
$arr['key']。检查代码逻辑,初始化变量或者加个isset($arr['key'])判断就好了。 - Warning(警告):说明存在潜在问题,可能导致意外行为,比如
1/0除零、未初始化变量。修复代码逻辑,比如加个if($divisor != 0)判断,或者把变量初始化。 - 其他错误:如果日志里出现了
Fatal error(致命错误,比如类找不到)或Parse error(语法错误,比如少了个括号),那得优先修——否则脚本直接跑不起来。
3. 检查并调整PHP配置
有时候警告被“隐藏”了,不是因为没发生,而是PHP配置没开日志记录。打开 php.ini 文件(路径通常是 /etc/php/7.x/fpm/php.ini 或 /etc/php/7.x/apache2/php.ini),把下面这几项改好:
error_reporting = E_ALL; 记录所有错误(包括警告)
display_errors = Off ; 关闭页面显示错误(避免敏感信息泄露)
log_errors = On; 开启日志记录
error_log = /var/log/php_errors.log; 指定自定义日志路径(可选)
改完之后记得重启PHP服务,配置才能生效:
# 若使用PHP-FPM
sudo systemctl restart php7.x-fpm
# 若使用Apache
sudo systemctl restart apache2
4. 验证Web服务器配置
不管是Apache还是Nginx,服务器配置不对也会导致警告。分别检查:
- Apache:确保PHP模块已经启用,然后重启:
sudo a2enmod php7.x # 启用对应PHP版本的模块 sudo systemctl restart apache2 - Nginx:确认
fastcgi_pass指令指向了正确的PHP-FPM socket,比如fastcgi_pass unix:/run/php/php7.x-fpm.sock;,然后重启Nginx:sudo systemctl restart nginx
同时别忘了瞄一眼Web服务器自己的错误日志(比如Apache的 /var/log/apache2/error.log),有时候告警的根源其实在服务器配置上。
5. 处理环境依赖问题
有些警告是因为环境没配好,比如:
- 扩展缺失:如果日志提示
Unable to load dynamic library 'mbstring.so',那就装一下对应扩展:sudo apt install php-mbstring # 根据PHP版本调整,比如php7.4-mbstring - 权限问题:确保网站目录和文件权限正确,比如
/var/www/html的属主是www-data,权限755:sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html - 内存不足:如果日志提示
Allowed memory size exhausted,那就去php.ini里把memory_limit调大一点,比如设为256M:memory_limit = 256M
改完这些之后,别忘了重启PHP服务。
6. 使用工具优化日志管理
项目一旦复杂起来,手动翻日志就有点吃力了。这时候可以考虑用日志库,比如 Monolog,把警告集中管理。通过Composer安装:
composer require monolog/monolog
然后在代码里配置日志记录,比如把警告写入 /var/log/my_app.log:
require_once 'vendor/autoload.php';
use MonologLogger;
use MonologHandlerStreamHandler;
$logger = new Logger('my_application');
$logger->pushHandler(new StreamHandler('/var/log/my_application.log', Logger::WARNING));
$logger->warning('This is a custom warning message'); // 记录警告
这种方式能让你更灵活地管理日志,后期排查问题也方便很多。