gpt4 book ai didi

php - 在 php 错误日志中禁用 E_DEPRECATED

转载 作者:IT王子 更新时间:2023-10-29 00:03:42 25 4
gpt4 key购买 nike

我有一台运行商业软件的生产服务器,该软件使用了已弃用的功能。我们已经在 php.ini 中禁用了错误输出——display_errors = Off——因此用户不会看到这些错误。但是,我们仍在记录 PHP 错误——log_errors = On——以便追踪问题。

问题:对于最终传递给错误日志的内容,PHP 似乎忽略了 error_reporting 指令。无论输入什么值组合,文件记录都会发生,就像我设置为 E_ALL 一样。因此,我的错误日志中充斥着弃用通知。

在 php.ini 中设置了默认时区值,因此与时区相关的问题不相关。

软件包的升级尚不可用,因此请不要建议“仅修复已弃用的代码”。我正在专门寻找方法来防止 PHP 在不完全禁用文件日志记录的情况下将已弃用的错误转储到日志中。

服务器详细信息:

  • Ubuntu 10.04.2 LTS
  • PHP 5.3.2

最佳答案

当 PHP 作为 Apache 模块运行时,您可以使用 Apache 配置文件中的指令访问/更改 php.ini 中可用的任何配置设置。这些指令是...

  • php_value
  • php_flag
  • php_admin_value
  • php_admin_flag

php_*php_admin_* 版本的区别是这个问题的关键。使用 php_admin_valuephp_admin_flag 设置的值只能在 Apache 全局和 VirtualHost 配置中设置;它们不能被 .htaccess 或 ini.set() 覆盖

error_reporting() 函数等同于 ini_set() 调用,并遵循相同的规则。

所以我进入了相关站点的虚拟主机配置,并添加了以下行...

php_admin_value error_reporting 22527
php_admin_value error_log /custom/log/path/php_errors.log
php_admin_flag log_errors On
php_admin_flag display_errors Off
  1. 第一行是 error_reporting = E_ALL & ~E_DEPRECATED 的按位值。我通过创建一个简单的脚本检索了这个值:

    ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
    echo ini_get("error_reporting");

    如果您想忽略系统通知以及弃用警报——error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE——位值是 22519

  2. 第二行将所有 PHP 错误发送到自定义日志。默认情况下,PHP 将使用 syslog 值,通常是 /var/log/apache2/error.log 或类似的东西。

  3. 第三行启用文件日志记录。

  4. 最后一个关闭页面错误显示。

同样,操作的优先级和顺序在这里很关键。这些值取代 php.ini 中定义的值,同时不能被应用程序或 .htaccess 文件中的其他更改覆盖。

有关在 php.ini 之外更改配置值的更多详细信息,请参阅 PHP documentation .

关于php - 在 php 错误日志中禁用 E_DEPRECATED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com