找回密码
 立即注册
首页 业界区 业界 7 个从入门到资深 PHP 开发者都在用的核心调试技能 ...

7 个从入门到资深 PHP 开发者都在用的核心调试技能

艋佰傧 5 天前
7 个从入门到资深 PHP 开发者都在用的核心调试技能

调试的残酷真相

大多数 PHP bug 难搞,不是因为它们"复杂",而是因为它们看不见
变量在比你预期早两层的地方就变成了 null。一个"不可能发生"的条件偏偏只在生产环境发生。请求在本地正常,放到代理后面就挂了。队列 worker 的行为和 HTTP 运行时不一样。还有经典场景:你修好了……下周它又回来了。
想快速成长为 PHP 开发者,别急着学更多框架特性。先学会观察系统实际在做什么
下面是我认为每个 PHP 开发者从第一天就该掌握的 7 个调试技能。它们不是花招,而是会持续产生复利的习惯。
原文 7 个从入门到资深 PHP 开发者都在用的核心调试技能
错误要看得见,但别暴露给用户

看不到错误,你就不是在调试——你是在猜。
PHP 提供了可靠的错误可见性原语:error_reporting、display_errors 和日志设置。关键是把开发环境和生产环境当作不同的可观测模式来对待。
PHP 官方手册强烈建议在生产网站上记录错误而非显示错误。
开发环境:全开

在开发环境,你需要最大化的信号:
  1. ; php.ini (development)
  2. error_reporting = -1
  3. display_errors = On
  4. display_startup_errors = On
  5. log_errors = On
复制代码
如果你用 Docker 或开发容器,确认容器内部的设置:
  1. php -i | grep -E "error_reporting|display_errors|log_errors"
复制代码
生产环境:只记录,不显示

在生产环境,display_errors=On 不是"有帮助",而是漏洞。你要的是日志,不是泄露的堆栈跟踪。
  1. ; php.ini (production)
  2. error_reporting = -1
  3. display_errors = Off
  4. display_startup_errors = Off
  5. log_errors = On
  6. error_log = /var/log/php/app-error.log
复制代码
然后在故障期间 tail 日志:
  1. tail -f /var/log/php/app-error.log
复制代码
异常日志要带上下文

别完全依赖 PHP 默认的错误日志格式。在应用启动时添加一个顶层异常处理器(框架无关):
[code]

相关推荐

您需要登录后才可以回帖 登录 | 立即注册