You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1设置error_reporting(E_ERROR)仍显示E_DEPRECATED的问题

问题原因

问题出在php.ini里的display_startup_errors = On配置,结合命令行环境的特性导致了这个现象:

  • display_startup_errors原本是控制PHP启动阶段的错误显示,但在命令行环境中,它会强制显示部分运行时错误(比如strftime()的弃用警告E_DEPRECATED),哪怕你通过error_reporting(E_ERROR)设置了仅报告致命错误。
  • 你代码里的error_reporting()返回1,说明代码层面的设置是生效的,但display_startup_errors的优先级更高,直接绕过了这个限制输出了弃用警告。
  • 当你设置error_reporting(0)时,相当于完全关闭了所有错误报告,这会覆盖display_startup_errors的强制显示逻辑,所以警告就不再出现了。
解决办法
  • 临时修复:在代码开头加一行ini_set('display_startup_errors', 0);,关闭启动错误显示,这样error_reporting(E_ERROR)就能正常生效。
  • 永久修复:修改php.ini,把display_startup_errors改成Off,重启PHP后即可解决。

内容的提问来源于stack exchange,提问作者Cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:21