12

我已经在我的 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 是正确的。

4

5 回答 5

7

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

于 2011-05-27T19:57:26.477 回答
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
于 2015-04-21T12:18:04.233 回答
2

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

于 2011-05-27T19:30:02.950 回答
1

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

php_admin_value[date.timezone] = UTC

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

于 2020-08-24T15:01:54.197 回答
0

检查您的 FPM 安装,如果您有一个带有活动 chroot 的池!

如果您有 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

于 2018-10-04T16:02:46.190 回答