PhpStorm 需同时配置 PHP CLI 错误报告(error_reporting=32767)和启用编辑器 Inspections(如 Deprecated functions、Undefined variable),并检查 phpstan/phpcs 是否干扰,才能全面捕获运行时与静态错误。

PhpStorm 默认不会主动报出所有 PHP 级别错误(比如 E_DEPRECATED、E_USER_NOTICE),它依赖两个独立机制:PHP 解释器本身的错误报告设置,以及 PhpStorm 自带的静态代码检查(Inspections)。只调其中一个,很可能“看着没报错,但运行时炸了”或者“满屏红色警告却实际能跑”。
确认 PHP CLI 解释器是否启用完整错误报告
PhpStorm 的“运行/调试”和“控制台”(Terminal / PHP Script 运行)用的是你配置的 PHP CLI 可执行文件。如果这个 PHP 本身关掉了 E_DEPRECATED 或 E_STRICT,PhpStorm 就拿不到这些错误信息。
- 打开 File → Settings → Languages & Frameworks → PHP,检查
CLI Interpreter是否指向正确的php路径(不是php-cgi) - 点击右侧
...→Environment variables,添加或确认:error_reporting=32767(即E_ALL | E_STRICT) - 更稳妥的方式是直接修改该 PHP 的
php.ini:找到对应 CLI 的配置文件(运行php --ini查看),确保有:error_reporting = E_ALL | E_STRICT
- 改完后重启 PhpStorm,再在
Run → Run...里执行一个含@trigger_error('xxx', E_USER_DEPRECATED)的脚本,看控制台是否输出
开启 PhpStorm 内置 PHP 检查(Inspections)
这部分不依赖 PHP 运行时,是 PhpStorm 基于语法树做的静态分析,对未定义变量、类型不匹配、废弃函数调用等特别有用,但默认可能被关掉或设为弱提示。
- 进入 Settings → Editor → Inspections → PHP
- 勾选关键项:
Deprecated functions and classes、Undefined variable、Possible null reference、Unused symbol - 注意右侧 Severity 下拉菜单:把
Warning改成Error才会在编辑器里标红;若只想高亮不打断,选Weak Warning - 如需全局生效,确保顶部 Scope 是
Project Files(而非PHP Built-in Server这类子项)
检查 phpstan / psalm / phpcs 是否干扰或覆盖原生提示
如果你项目里配了 phpstan 或 phpcs 并启用了 PhpStorm 集成(Settings → Languages & Frameworks → PHP → Quality Tools),它们的规则优先级可能高于 PhpStorm 原生检查,导致“明明开了 Deprecated 检查,却没提示”。
立即学习“PHP免费学习笔记(深入)”;
- 临时禁用这些工具:取消勾选
Enable,看原生提示是否恢复 - 若需保留,检查它们的配置文件(如
phpstan.neon)是否显式关闭了deprecation规则 -
phpcs特别容易漏:确认ruleset.xml中没有这类排除项
最容易被忽略的是:CLI 的 php.ini 和 Web Server(如内置 PHP Server 或 Apache)的 php.ini 是两份配置。你在浏览器里看到的 E_DEPRECATED 提示,跟 PhpStorm 运行脚本时看到的,根本不是同一个开关控制的。务必分清场景,分别验证。










