>我有以下测试代码:
<html>
<body>
<p>
Hi
</p>
<?php
if (function_exists('date_default_timezone_get')) {
echo "J";
$timezone = @date_default_timezone_get();
echo "K";
date_default_timezone_set($timezone);
echo "L";
}
phpinfo();
?>
</body>
</html>
当我通过我显然有效的 apache 检索它时,我得到的只是:
<html>
<body>
<p>
Hi
</p>
J
如果我注释掉"$timezone = @date_default_timezone_get((;",那么我会收到一个响应,其中包含有关未定义"$timezone"的错误,然后是标准的phpinfo((输出。
到目前为止,我找到的所有调试选项都没有在任何日志中显示任何感兴趣的内容。
在命令行上使用 php 运行脚本也不会出错。
仅供参考:这是我试图弄清楚为什么我的 websvn 突然停止工作,我已经将失败范围缩小到这一行,它在示例代码中失败了,所以我对此感觉还不错,而不是为什么它只是不起作用。
为什么要在函数调用之前保留@
?它抑制了可能有帮助的错误输出。
另外,您使用的是哪个PHP版本?日期时间函数仅在 5.2.0 之后默认启用。
我也不排除这样一种可能性,即即使date_default_timezone_get()
函数存在,它也不是 PHP 附带的标准函数,而是定制的东西。
在websvn中完全注释掉调用后,我从另一行收到一个新错误:
时区数据库已损坏 - 这不应该发生!
这个错误导致我调查我的时区信息出了什么问题,显然/usr/share/zoneinfo/中的所有文件都有 640 个权限,将它们更改为 644 并且错误已经消失。