无法在 PHP 中设置默认时区
我已在 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)而不是fcgi(nginx中的php)时,date.timezone是正确的。
I've set this in my php.ini file, and restarted php5-fpm process
date.timezone = "UTC"
But phpinfo() script still shows this:
date.timezone America/New_York America/New_York
phpinfo()
also shows that correct ini file is being used.
I've restarted - but problem persisted. Then I did:
sudo service nginx stop
sudo service apache2 start
and date.timezone is correct when mod-php (apache2) is in use instead of fcgi that is php in nginx.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在我的默认安装中,我有非常奇怪的配置。文件 /etc/php/7.3/fpm/pool.d/www.conf 在文件末尾有这样的设置,
它导致 php.ini 中的时区设置被忽略,并且默认系统时区被忽略。
In my installation BY DEFAULT I had realy weird configuration. File /etc/php/7.3/fpm/pool.d/www.conf had such a setting at the end of the file
It lead to timezone setting being ignored in php.ini and default system timezone being ignored.
如果您有一个具有活动 chroot 的池,请检查您的 FPM 安装!
如果您有 chroot 环境,则需要将文件 /etc/localtime (符号链接到 /usr/share/zoneinfo/xyz)和目录 /usr/share/zoneinfo 复制到您的 chroot。
可能的错误消息:
请参阅 https://serverfault.com/questions/413293/ php-fpm-chroot-jail-corrupts-timezone-db
Check your FPM Installation, if you have a pool with a active chroot!
If you have a chroot environment, you need to copy the file /etc/localtime (symlink to /usr/share/zoneinfo/xyz) and the directory /usr/share/zoneinfo to your chroot.
Possible Error-Messages:
See https://serverfault.com/questions/413293/php-fpm-chroot-jail-corrupts-timezone-db
您可能编辑了错误的
php.ini
。请参阅php_info()
(或用于 cli 解释器的php -i
)使用哪一个。例如,在 ubuntu(可能还有其他 Linux 发行版)上,其 cli 解释器的/etc/php5/cli/php.ini
为/etc/php5/apache/php.ini/< /code> 用于 Apache
mod_php
使用的文件,以及php5-cgi
使用的/etc/php5/cgi/php.ini
(即由nginx
使用)。You probably edited the wrong
php.ini
. Seephp_info()
(orphp -i
for the cli interpreter) which one is used. For example on ubuntu (and probably other linux distributions) its/etc/php5/cli/php.ini
for the cli-interpreter,/etc/php5/apache/php.ini/
for the one used by Apachesmod_php
and/etc/php5/cgi/php.ini
used byphp5-cgi
(which is used bynginx
).问题似乎出在 php-fpm 进程上,该进程徘徊并引用旧的 php.ini 文件设置。
这对我有用:
获取 php-fpm 的进程 ID
杀死进程。从大师开始。
使用 init 脚本启动 php-fpm
The problem seems to be be with php-fpm processes that lingers around and refers to the old php.ini file settings.
This worked for me:
Get the process ids for php-fpm
Kill the processes. Starting with the master.
Start php-fpm using the init script
支持的时区值列表:http://php.net/timezones
List of supported timezone values: http://php.net/timezones