在PHP .ini文件中设置PHP的时区


Setting the Timezone for PHP in the php.ini file

我试图通过访问/etc/php5/cli/php.ini文件并更改

将默认PHP时区更改为Asia/Calcutta
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Calcutta"

但是,当我试图查看phpinfo()下的当前时区时,该时区遵循Europe/Berlin时区。

我已经尝试停止并重新启动Apache服务器,但这似乎没有改变设置。

在这个过程中我错过了什么吗?

PS:我正在使用PHP 5.6.8目前在XAMPP。

我尝试了所有其他可能的解决方案,但没有一个有用。这是帮助我保存时区设置的方法:

1)进入phpinfo()页面,搜索Loaded Configuration File并打开该部分提到的php.ini文件

2)通过修改date.timezone=Asia/Kolkata .

来添加新时区,从而更改默认时区设置。

3)保存php.ini文件并停止Apache服务器。

4)重启Apache服务器。现在应该修改时区设置了。

您可以在代码中更改它而无需触摸ini文件,在代码开头添加:

date_default_timezone_set('Asia/Calcutta')

您正在更改错误的文件。/etc/php5/cli/php.ini是cli -命令行接口使用的文件。更新正确的sudo service apache2 restartsudo service php5-fpm restart后,不要忘记重新启动web服务器

不同操作系统的文件位置:

OS                               ->  Location
windows(With Xampp Installation) -> /xampp/php/php.in 
Mac OSX                          -> /private/etc/php.ini
Linux                            -> /etc/php.ini
                                 -> /usr/bin/php5/bin/php.ini
                                 -> /etc/php/php.ini
                                 -> /etc/php5/apache2/php.ini

我遇到了同样的问题,发现有两个日期。php.ini中的时区语句在我的XAMPP版本中是开箱即用的。第一个语句被注释掉,但第二个语句被设置为Europe/Berlin。因此,如果您编辑php.ini并搜索时区,并在逻辑上用您的时区取消第一个语句的注释,则第二个语句将覆盖回欧洲/柏林。

  • phpinfo()返回Loaded Configuration File => /etc/php/5.6/cli/php.ini .
  • 我的date.timezone更改在更新以上并重新启动php-fpm (sudo systemctl reload php5.6-fpm.service)后没有生效。
  • phpinfo()也有Additional .ini files parsed部分,其中包含/etc/php/5.6/cli/conf.d/timezone.ini
  • 更新timezone.ini文件(date.timezone = "America/New_York")并重启php-fpm(如上)后,phpinfo()正确返回date.timezone => America/New_York => America/New_York

如果你正在使用Laravel,你应该改变Laravel的时区配置。

我的情况Laravel 6。编辑/config/app.php文件,修改

'timezone' => 'UTC',

'timezone' => env('APP_TIMEZONE', 'UTC'),

然后编辑。env文件。添加您的时区(timezone list)

APP_TIMEZONE='America/New_York'

明确配置

php artisan config:clear

对于我来说,在编辑/etc/php-ini文件后运行systemctl restart php-fpm解决了这个问题。

  1. 如果你对web开发很认真,那就使用虚拟机(Virtual Box + Vagrant)。
  2. 使用XAMPP要小心。有时php.ini文件不止一个,你可能编辑错了。要编辑真实的,可以从XAMPP控制面板访问它。
  3. 您可以在代码中使用a函数:date_default_timezone_set();

检查系统配置

在我的例子中,它是"Ubuntu"

sudo cat /etc/timezone Asia/Kolkata

在我的例子中,Centos 8, DirectAdmin, Openlitespeed, php 7 (lsphp服务器必须运行Openlitespeed)

  1. 转到DirectAdmin(使用admin/root密码)->CustomBuild ->设置->选项→PHP设置->php_timezone→输入您的时区并保存时间间隔列表在这里:https://www.php.net/manual/en/timezones.php

  2. return CustomBuild -Build ->选择PHP,然后单击build!

  3. 等待10分钟…

什么都没用,我在用FPM

/etc/php/8.2/fpm/pool.d中找到一个名为www.conf的文件,编辑php_admin_value[date.timezone]值,用sudo service php8.2-fpm重新启动FPM,它工作了。

我正在使用Vultr,希望这个答案能在将来帮助到别人。