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

/var/log/apache2/error.log;/var/log/nginx/error.log;/var/log/php7.x-fpm.log 里了(x 换成你的版本号,比如7.4、8.0)。然后,用下面这条命令实时盯着日志(以Apache为例):
sudo tail -f /var/log/apache2/error.log
日志里会清楚告诉你警告的类型(Deprecated、Notice、Warning),发生在哪个文件的哪一行,以及具体的描述信息。这就是解决问题的核心依据。
不同类型的警告,处理方式差别很大,别一概而论:
session_register()。这时候去PHP官方文档翻一翻,换成推荐的替代方案就行,比如用 $_SESSION 替代 session_register()。$arr['key']。检查代码逻辑,初始化变量或者加个 isset($arr['key']) 判断就好了。1/0 除零、未初始化变量。修复代码逻辑,比如加个 if($divisor != 0) 判断,或者把变量初始化。Fatal error(致命错误,比如类找不到)或 Parse error(语法错误,比如少了个括号),那得优先修——否则脚本直接跑不起来。有时候警告被“隐藏”了,不是因为没发生,而是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
不管是Apache还是Nginx,服务器配置不对也会导致警告。分别检查:
sudo a2enmod php7.x # 启用对应PHP版本的模块
sudo systemctl restart apache2fastcgi_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),有时候告警的根源其实在服务器配置上。
有些警告是因为环境没配好,比如:
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/htmlAllowed memory size exhausted,那就去 php.ini 里把 memory_limit 调大一点,比如设为256M:memory_limit = 256M改完这些之后,别忘了重启PHP服务。
项目一旦复杂起来,手动翻日志就有点吃力了。这时候可以考虑用日志库,比如 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'); // 记录警告
这种方式能让你更灵活地管理日志,后期排查问题也方便很多。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8