PHP 启动:时区数据库已损坏

PHP 启动:时区数据库已损坏

我有一台 CentOS 5.2 服务器。PHP 现在是 5.2.10 版本 (php-5.2.10-1.el5.remi.i386),我已经更新到 5.3,tzdata 也更新了 (tzdata-2009i-2.el5.noarch)。自从更新以来,Apache 拒绝启动,因为 PHP 崩溃了。

这是 httpd/error.log

[Wed Jul 08 11:40:21 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Wed Jul 08 11:40:24 2009] [notice] Digest: generating secret for digest authentication ... 
[Wed Jul 08 11:40:24 2009] [notice] Digest: done PHP Strict Standards: PHP Startup: It is not safe to rely on the system's timezone settings.
Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected` 'Europe/Berlin' for 'CEST/2.0/DST' instead in Unknown on line 0
**PHP Fatal error: PHP Startup: Timezone database is corrupt - this should never happen! in Unknown on line 0**

谨致问候,塞德里克

答案1

这似乎是 php.net 上存在的一个 bug:http://bugs.php.net/bug.php?id=48882

这里建议

添加 TZ=GMT(阿帕奇)init.d脚本

它应该可以解决问题。

答案2

这是一个老问题,但无论如何,这里是答案:在问题中,提问者使用了 suExec 机制。那些使用 mod_chroot 或内置于 ChrootDir 的 apache2 的人也会遇到类似的问题。

确保 {chroot}/etc/localtime 和 {chroot}/usr/share/zoneinfo 存在 - 就是这样。

致谢: http://www.phwinfo.com/forum/alt-comp-lang-php/315265-timezone-database-corrupt.html#post1410153

答案3

根据之前的答案修复了它(CentOS v6):

nano /etc/init.d/httpd

但不是 UTC,而是 GMT+1:00。法国可能采用 GMT。

export TZ="Europe/Berlin"

并重新启动:

service httpd restart

相关内容