php关于error_reporting的配置

今天将代码上线到测试环境的,突然报错了,但在我本地自测的时候一直是没问题的,真让人感到奇怪,这段出错的代码大概写了如下的逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class BaseTest
{
public function test()
{
return "test";
}
}

class Test extends BaseTest
{
public static function getName()
{
return parent::test();
}
}

在测试环境上调用BaseTest::getName()方法的时候,就会报一个Strict standards的错误。这里应该是自己的一个疏忽,在static方法中是不应该用parent的,但是居然在开发环境不报错!Strict standards应该是指严格标准的错误报告,第一反应就是去看本地php.ini的配置,发现自己本地的php.ini配置的error_reporting是E_ALL & ~E_DEPRECATED & ~E_STRICT,原来是这里将严格标准的错误报告给过滤了,结果出现了测试环境的错误。在看一下php.ini的描述,里面提到开发环境应该将error_reporting配置为E_ALL级别,而生产环境配置为E_ALL & ~E_DEPRECATED & ~E_STRICT,自己的开发环境装上php后就默认是去严格标准格式的,这个地方在配置开发环境的时候以后要必须注意了。