php.ini 中的设置被部分忽略了?

Posted

技术标签:

【中文标题】php.ini 中的设置被部分忽略了?【英文标题】:Settings in php.ini partially ignored? 【发布时间】:2014-10-10 03:26:31 【问题描述】:

不知何故,我的 php.ini 被部分忽略了。例如,我可以更改显示错误的设置,但不能更改错误报告。

设置如下:

$ php -i | grep "Configuration file"
Configuration File (php.ini) Path => /usr/local/php5/lib
Loaded Configuration File => /usr/local/php5/lib/php.ini

让我们检查error_reporting和display_errors的值:

grep "error_reporting\|display_errors"
error_reporting => 32767 => 32767
display_errors => Off => Off

让我们更改值(error_reporting = E_ERROR,display_errors = on),重新启动 Apache 并再次检查:

$ sudo nano /usr/local/php5/lib/php.ini
$ sudo apachectl restart
$ php -i | grep "error_reporting\|display_errors"
error_reporting => 32767 => 32767
display_errors => STDOUT => STDOUT

我在哪里检查这些设置并不重要。它们在浏览器和终端上都是一样的。 error_reporting 总是 32767 (=E_ALL)。

即使设置 disable_functions 也无济于事。

disable_functions = error_reporting

时区也是如此,设置会被忽略。但是 post_max_size 和 upload_max_filesize 是可变的。

我的配置有什么问题?

【问题讨论】:

【参考方案1】:

通过安装 PHP 5.5

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

一个名为 99-liip-developer.ini 的文件将安装在 /usr/local/php5/php.d 中。这会覆盖一些设置(请参阅http://php-osx.liip.ch/#faq)。

重命名或删除文件后,PHP 按预期工作。

我发现了这个

$ php -i | grep "Scan this dir for additional"
Scan this dir for additional .ini files => /usr/local/php5/php.d
grep -R "error_reporting" /usr/local/php5/php.d/

感谢这样的!

【讨论】:

【参考方案2】:

您好,您的代码中有 set_error_handler 吗?

set_error_handler("my_error_handler"); // override error_reporting()

【讨论】:

以上是关于php.ini 中的设置被部分忽略了?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 错误抑制被忽略

如何开启PDO,PDO_MYSQL扩展

Docker phpmyadmin 忽略了我的 php.ini 配置

PHP代码编译为OPCODE

php.ini配置文件

PHP 基础语法 常量 变量