使用控制台参数设置php error_reporting值


11

为了测试我的PHP项目是否有错误,我通常使用以下命令:

find ./ -type f -name \*.php -exec php -l '{}' \; | grep -v "No syntax errors detected"

我想php -l '{}' \;用一些参数扩展该部分,以便它将使用自定义的error_reporting级别,而不是php.ini中定义的级别。这可能吗?

(我知道这个问题在某种程度上与编码有关。另一方面,它更多地是关于shell命令的。如果您认为在stackoverflow上应该更好,那么请随意移动它。我不确定这个问题在哪里更合适。)


你的意思是error_reporting水平吗?您为什么不想要php.ini在PHP文件本身中使用value 或custom。
Quanta

@quanta:是的,我说的是error_reporting。抱歉,还不够清楚。我现在更改问题。我不想在php.ini中进行更改,因为有时也会在实时服务器上使用此命令链。在文件本身中设置它也不是一种选择,因为我必须在每个文件中设置它,因为find命令单独执行每个文件。有时我有一些项目在其中使用外部库,我也想同时对其进行测试。
拉斐尔·卢西格

Answers:


15

根据 php -h

-d foo[=bar]     Define INI entry foo with value 'bar'

如果要使用推荐的生产默认值(E_ALL & ~E_DEPRECATED),则该值将22527在PHP 5.3和24575PHP 5.4+中。

php -l -d error_reporting=22527

查找各种组合的值很简单。

php -r 'echo E_ALL & ~E_NOTICE | E_STRICT;' # should return 32759
php -r 'echo E_ALL & ~E_DEPRECATED;' # should return 22527 in PHP 5.3, 24575 in PHP 5.4+

1
该死的...我读“ php -h”大约十次,但是不知何故我的脑子总是跳过这条线...。是的,这就是我要寻找的东西。就我而言,我想使用:E_ALL | E_STRICT这是32767
拉斐尔Luthiger

从PHP 5.4开始,E_STRICT是的一部分E_ALL。并E_ALL具有方便的快捷值-1。因此,您可以php -d error_reporting=-1启用所有报告功能。
Martin Prikryl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.