【问题标题】:PHP CLI suppress warnings via php.iniPHP CLI 通过 php.ini 抑制警告
【发布时间】:2014-01-20 04:02:46
【问题描述】:

每次我在控制台中启动 php 时都会收到一些警告。

xx@peach ~ $php -i | echo "test";
test
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/idn.so' - /usr/lib/php5/20100525/idn.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/suhosin.so' - /usr/lib/php5/20100525/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0

考虑到 cli/php.ini 不应该有任何警告。

error_reporting = E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_USER_NOTICE
display_errors = On
display_startup_errors = Off

我通过

检查了使用过的 php.ini 文件
xx@peach ~ $ php -i | grep 'Configuration File'
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/idn.so' - /usr/lib/php5/20100525/idn.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/suhosin.so' - /usr/lib/php5/20100525/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

我不明白为什么每次从控制台启动 php 时都会显示警告。我认为使用“~E_WARNING”会禁用警告?

【问题讨论】:

  • suhosin 更多地用于基于 Web 的安全性。在 CLI 模式下确实不需要加载它,因此从 CLI .ini 文件中删除它不会造成任何问题。

标签: php warnings command-line-interface error-reporting


【解决方案1】:

我猜你的过滤器不起作用,因为这些警告是启动错误(IIRC:E_STARTUP_WARNING),而不是传统的警告。

它们发生是因为您在 php.ini 中配置了 2 个扩展,但在文件系统中找不到:

/usr/lib/php5/20100525/idn.so

/usr/lib/php5/20100525/suhosin.so

这可能是由两个因素造成的:

  • 您的扩展已从文件系统中删除,但未从您的 php.ini 中删除。在这种情况下,只需注释 php.ini 中对应的 2 行
  • 这些扩展在您的 php.ini 中的路径是错误的。在这种情况下,请检查扩展在磁盘上的位置并修复 php.ini 中的路径

如果你想让我更具体,我需要查看你的 php.ini 以及 php 在你机器上的安装方式(分发包或特定编译)

本杰明-

【讨论】:

  • 谢谢,对于这两种解决方案,我正在寻找的是“E_STARTUP_WARNING”,但只是为了消除错误似乎很难看,所以我必须修复 2 个错误。对于 suhosin 错误,我刚刚清除了包,因为文件丢失(在将 von squeeze 更新为 wheezy 之后)“apt-get purge php5-suhosin”(来源:blog.datentraeger.li/?p=3454)。 idn.so 错误来自一个新包 php5-intl,它确实删除了 idn 包,但不是完全删除(来源:epunks.de/blog/artikel/…)。感谢您的帮助
【解决方案2】:

从 Debian 6 Squeeze 升级到 Debian 7 Wheezy 后会出现此问题。在我的安装中,它完全解决了:

apt-get purge php5-idn         (removed from Debian 7 Wheezy, has gone into php5-intl)

apt-get purge php5-suhosin     (removed from Debian 7 Wheezy)

之后,发出“php”不再带来警告。

【讨论】:

  • 你不应该删除 suhosin !!
  • php5-suhosin 不是 Wheezy 的一部分,为什么不删除旧的引用。 “Suhosin 已从 Debian 版本 7 中删除 (wheezy)”en.wikipedia.org/wiki/Suhosin
猜你喜欢
  • 2020-02-15
  • 2020-11-09
  • 1970-01-01
  • 2017-06-10
  • 2012-07-13
  • 2011-03-31
  • 2019-10-22
  • 2014-12-19
  • 2021-12-27
相关资源
最近更新 更多