@date_default_timezone_get() 静默崩溃



>我有以下测试代码:

<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 并且错误已经消失。

最新更新