无法在PHP中设置默认时区

时间:2011-05-27 19:28:49

标签: php timezone php-ini

我在php.ini文件中设置了这个,并重新启动了php5-fpm进程

date.timezone = "UTC"

但是phpinfo()脚本仍然显示:

date.timezone   America/New_York    America/New_York

phpinfo()还显示正在使用正确的ini文件。

我重新启动了 - 但问题仍然存在。然后我做了:

sudo service nginx stop
sudo service apache2 start
当使用mod-php(apache2)而不是在nginx中使用php的fcgi时,

和date.timezone是正确的。

5 个答案:

答案 0 :(得分:7)

您可能编辑了错误的php.ini。请参阅php_info()(或cli解释器的php -i)使用哪一个。例如,在ubuntu(可能还有其他Linux发行版)上,其/etc/php5/cli/php.ini用于cli-interpreter,/etc/php5/apache/php.ini/用于Apaches mod_php使用的/etc/php5/cgi/php.iniphp5-cgi用于nginx }(由{{1}}使用)。

答案 1 :(得分:2)

支持的时区值列表:http://php.net/timezones

答案 2 :(得分:2)

问题似乎是php-fpm进程徘徊并引用旧的php.ini文件设置。 这对我有用:

获取php-fpm的进程ID

root@thiru:/etc/php5/fpm/conf.d# ps aux | head -1 && ps aux | grep php-fpm | grep -v grep
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     32650  0.0  0.5  86624 17032 ?        Ss   21:44   0:00    php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 32652  0.0  0.1  86624  4700 ?        S    21:44   0:00 php-fpm: pool www                                                       
www-data 32653  0.0  0.1  86624  4704 ?        S    21:44   0:00 php-fpm: pool www   

杀死进程。从主人开始。

kill -9 32650
kill -9 32652
kill -9 32653

使用init脚本启动php-fpm

service php5-fpm start or /etc/init.d/php5-fpm start

答案 3 :(得分:1)

在默认安装中,我的配置确实很奇怪。文件/etc/php/7.3/fpm/pool.d/www.conf在文件末尾有这样的设置

php_admin_value[date.timezone] = UTC

这导致php.ini中的时区设置被忽略,默认系统时区被忽略。

答案 4 :(得分:0)

如果您的池具有活动的chroot,请检查您的FPM安装!

如果您具有chroot环境,则需要将文件/ etc / localtime(符号链接到/ usr / share / zoneinfo / xyz)和目录/ usr / share / zoneinfo复制到您的chroot。

可能的错误消息:

Fatal error: phpinfo(): Timezone database is corrupt - this should *never* happen!  
Warning: phpinfo(): Invalid date.timezone value ‘UTC’, we selected the timezone ‘UTC’ for now.

请参见https://serverfault.com/questions/413293/php-fpm-chroot-jail-corrupts-timezone-db