PHP命令行错误:时区数据库已损坏

Hus*_*ain 5 php permissions timezone date

我的date.php是 -

<?php
echo date('Y');
Run Code Online (Sandbox Code Playgroud)

当我php -f date.php在我的登台机器上执行时,我收到错误 -

PHP Fatal error:  date(): Timezone database is corrupt - this should *never* happen! 
in /home/staging/test/date.php on line 2
Run Code Online (Sandbox Code Playgroud)

但是当我在我的本地/ dev机器上执行相同的工作时.虽然在登台和本地计算机上,权限/etc/localtime/usr/share/zoneinfo/是相同的.

file /etc/localtime两台机器的产量各不相同.

本地(php5.3.5):

/etc/localtime: timezone data, version 2, 4 gmt time flags, 4 std time flags, no leap seconds, 4 transition times, 4 abbreviation chars
Run Code Online (Sandbox Code Playgroud)

暂存(php5.3.10):

/etc/localtime: timezone data, version 2, 1 gmt time flag, 1 std time flag, no leap seconds, no transition times, 1 abbreviation char
Run Code Online (Sandbox Code Playgroud)

在试图找到问题的同时,我发现了SO的这个链接.我对接受的答案感到困惑.我的apache用户没有执行脚本.

什么似乎是问题?我该如何解决这个问题?

sym*_*ean 1

由于各种原因,PHP 附带了自己的时区数据库 - 通过在编译时以不同方式配置软件,可以使用系统 TZDB。

PHP timezonedb 是作为C 代码实现的(大量定义) - 因此您需要重新编译 PHP 才能使其工作。

如果您的 PHP 解释器未明确配置为使用操作系统 timezoneDB,那么您确实需要调查可执行文件损坏的原因。