@date_default_timezone_get()默默地崩溃

时间:2016-02-16 02:48:47

标签: php

我有以下测试代码:

<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运行脚本也没有错误。

仅供参考:这是我试图找出为什么我的网站突然停止工作,我已经缩小了这条线的失败并且它在示例代码中失败了,所以我感觉相当不错,除了为什么它只是不会工作。

2 个答案:

答案 0 :(得分:1)

为什么在函数调用之前保留@?它抑制了可能有帮助的错误输出。

另外,你使用的是什么PHP版本? DateTime函数仅在5.2.0。

之后默认启用

我也不排除即使存在date_default_timezone_get()函数的可能性,它也不是PHP附带的标准函数,而是自定义的函数。

答案 1 :(得分:0)

在完全使用websvn注释掉调用之后,我从另一行获得了一个新错误:

  

时区数据库已损坏 - 这绝不会发生!

这个错误导致我调查了我的时区信息有什么问题,显然/ usr / share / zoneinfo /中的所有文件都有640个权限,将它们更改为644并且错误消失了。