我目前已为我的网站启用了所有错误:
error_reporting(E_ALL);
但是,在 PHP 8.1 中,一些函数现已弃用:
PHP Notice: Function date_sunset() is deprecated in index.php on line 14
由于当前的要求,我无法将该行更新为未弃用的替代方案。
有没有办法仅针对这一行禁用弃用错误报告?
作为解决方法,您可以像这样包装已弃用的行:
error_reporting(E_ALL & ~E_DEPRECATED);
// call_deprecated_function_here()
error_reporting(E_ALL);
或者,如果您想简单地切换已弃用的标志,请使用以下命令:
error_reporting(error_reporting() ^ E_DEPRECATED); // toggle E_DEPRECATED (off)
// call_deprecated_function_here()
error_reporting(error_reporting() ^ E_DEPRECATED); // toggle E_DEPRECATED (back on)
从 PHP 8 开始,您可以在已弃用的函数前面添加 @
。使用
@
可以抑制 PHP 错误消息,否则此时会抛出这些错误消息;或者,更准确地说,引用文档的第一条评论:
错误处理程序仍会被调用,但调用时错误级别为 0例如
@functionName(...)
为什么不尝试使用 PHP 自己的 API 建议的内容?:
强烈建议不要依赖此功能。请改用 date_sun_info() 。参见
date_sun_info() ...不过参数较少,具体取决于您之前使用 date_sunset() 的内容。