我从php 5.2升级到5.4并且出现You are *required* to use the date.timezone setting
错误。是的我知道关于date_default_timezone_set('zone_name')
,在我的php.ini中设置时区并使用gmdate(),只是听我说...: - )
所以错误就出现了行号和第二个错误:
Fatal error: Cannot redeclare getHostname()
这是有趣的地方。为date.timezone设置和重新声明错误提供的行号是相同的,引用的实际行是:return $_SERVER['SERVER_NAME'];
并形成一个小包装函数的一部分:
function getHostname()
{
return $_SERVER['SERVER_NAME']; # This is the line the parse identifies
}
如果我注释掉解析器很满意的函数,或者如果我在代码文件中移动函数,那么解析器抱怨的行号就会停留在移动的return $_SERVER['SERVER_NAME'];
行上,所以它是一致的它在抱怨。
然而,虽然解析器是一致的,但是线路是抱怨与date.timezone设置无关,这个函数也没有重新声明,并且向函数添加date_default_timezone_set('zone_name')
没有任何区别......甚至如果时区和主机名之间有链接。
我已经检查过代码库,getHostname
函数只在一个地方声明,而且这个代码已经在php 5.2及更低版本下运行了多年而没有任何重新声明问题。
现在我可以通过放弃使用包装器函数来解决问题,只使用裸$_SERVER['SERVER_NAME']
,但我对看起来像解析器感到困惑的东西很感兴趣。