0

0

php怎样记录错误日志_php记录错误日志方法【配置】

絕刀狂花

絕刀狂花

发布时间:2026-02-27 19:11:03

|

826人浏览过

|

来源于php中文网

原创

php error_log配置不生效需分cli/web模式排查:cli默认输出终端,web才写文件;确认php.ini路径、目录权限、error_reporting级别,并用自定义handler补充上下文与敏感字段过滤,配合logrotate防日志爆炸。

php怎样记录错误日志_php记录错误日志方法【配置】

php.ini 中 error_log 配置不生效?先确认运行模式

CLI 和 Web(如 Apache/FPM)下 error_log 的行为完全不同:CLI 默认输出到终端,Web 下才真正写入文件。如果你改了 php.ini 却没看到日志,大概率是 PHP 没在用你改的那个配置文件。

  • php --ini 查 CLI 加载的配置;用 phpinfo() 页面查 Web 环境实际加载的 php.ini 路径
  • error_log = /var/log/php_errors.log 只对 Web 模式有效;CLI 下需配合 log_errors = On + error_log 才写文件,否则仍打屏
  • 确保目标日志路径目录存在、PHP 进程有写权限(比如 www-data 可写 /var/log/php_errors.log),否则静默失败

set_error_handler() 拦截不到 Notice?因为默认级别太低

PHP 默认只把 E_ERRORE_WARNINGE_PARSE 送进自定义错误处理器,E_NOTICEE_DEPRECATED 被忽略——除非你显式调整 error_reporting

  • 在入口文件开头加 error_reporting(E_ALL),再调用 set_error_handler(),否则 undefined variable 这类 Notice 根本不会触发你的函数
  • 自定义 handler 里别直接用 error_log() 写文件——它可能被 log_errors = Off 关闭;推荐用 file_put_contents($file, $msg, FILE_APPEND | LOCK_EX)
  • 注意:自定义 handler 不会捕获 Fatal error(如语法错误、内存耗尽),这类必须靠 register_shutdown_function() + error_get_last() 补漏

记录日志时丢失上下文?$_SERVER 和堆栈得手动抓

PHP 原生 error_log() 只打消息和行号,没有请求 URL、IP、POST 数据这些关键信息。想定位线上问题,光靠错误文本远远不够。

行者AI
行者AI

行者AI绘图创作,唤醒新的灵感,创造更多可能

下载
  • 在自定义 handler 里主动拼接:$_SERVER['REQUEST_URI']$_SERVER['REMOTE_ADDR']debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5)
  • 避免在 handler 里调用可能出错的函数(比如访问未初始化的 $_SESSION),否则引发二次错误导致日志中断
  • 敏感字段如 $_POST['password'] 必须过滤,用 array_diff_key($_POST, ['password' => '']) 或正则擦除,别图省事全量 dump

日志文件爆炸性增长?error_log 不支持轮转,得自己控

error_log 是纯追加写,没有任何大小限制或按天切分逻辑。一个高流量站点几天就能写满磁盘。

立即学习PHP免费学习笔记(深入)”;

  • 别依赖 error_log = /var/log/php.log 一劳永逸;生产环境务必用外部工具(如 logrotate)或自建轮转逻辑
  • 轮转代码可放在 register_shutdown_function() 里:检查 filesize($log) 是否超 10MB,超则重命名成 php.log.20240515.1 并清空原文件
  • 多个 PHP-FPM worker 同时写一个文件没问题(FILE_APPEND 是原子的),但轮转时必须加锁,否则可能丢日志

真正难的不是“怎么记”,而是“记什么”和“什么时候停”。比如开发期开 E_ALL,上线后关掉 E_NOTICE;比如记录用户操作前先判断是否登录,否则一堆 Undefined index: user_id 冲垮日志。这些边界,配置文件里从不写明。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

348

2023.10.25

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

427

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

599

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

427

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

599

2023.08.10

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

5947

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3270

2024.08.14

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

2

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.6万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号