php日志监控和排查
开启PHP错误日志级别
抛出绝大多数错误异常
//临时修改配置 ini_set("display_errors", On); ini_set('log_errors','on'); //开启日志写入功能 ini_set('error_log','myerror.log'); //日志的存放位置 ini_set("error_reporting", E_ALL); #获取运行环境 get_cfg_var("env.name");
命令行:PHP错误日志
//查找和打开php配置文件 vim /usr/local/php-v/etc/php.ini 或者 /etc/php.ini //设置配置项 display_errors = On error_log = "/var/log/php74/error.log" //日志文件权限 chmod a+w /var/log/php74/error.log
php-fpm模式:错误日志
配置文件 vim /etc/php-fpm.conf 或者自定义安装目录 vim /etc/php-fpm.d/www.conf 日志目录 error_log = /var/log/php-fpm/error.log
nginx日志
nginx日志是基于nginx.conf域名或全局设置的日志路径
#先找到nginx.conf和vhost目录: whereis nginx #再找到访问日志和错误日志路径 /data/logs/nginx/host/access.log /data/logs/nginx/host/error.log
php程序对错误异常捕捉后自定义的日志文件
#设置兜底错误异常捕捉器 set_error_handler([$this, 'handleError']); set_exception_handler([$this, 'handleException']); register_shutdown_function([$this, 'handleShutdown']); //终极核武器,放在最前面(按顺序执行越靠前优先级越高),可以捕捉到语法错误 function handleShutdown(){ if (! is_null($error = error_get_last()) && in_array($error['type'], [E_COMPILE_ERROR, E_CORE_ERROR, E_ERROR, E_PARSE])) { var_dump($error); } } //突破PHP运行时限 set_time_limit(0); //无视请求断开 ignore_user_abort(true);
完全不抛异常的情况(经验积累)
1,php客户端连接断开
写入文件失败处理
1,文件所用户和组:以php-fpm进程用户来设置文件和目录的所属
2,修改文件的权限:755等等
3,文件的所属为root的时候,就算修改了777权限一段时间又会莫名其妙还原为原来的权限。只有修改文件所属为非root才能解决
ps -ef|grep php-fpm chown user:user path[/*] chmod 777 path[/*]