我试图通过访问/etc/php5/cli/php.ini
文件并更改
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 restart
或sudo 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
解决了这个问题。
- 如果你对web开发很认真,那就使用虚拟机(Virtual Box + Vagrant)。 使用XAMPP要小心。有时php.ini文件不止一个,你可能编辑错了。要编辑真实的,可以从XAMPP控制面板访问它。
- 您可以在代码中使用a函数:date_default_timezone_set();
检查系统配置
在我的例子中,它是"Ubuntu"
sudo cat /etc/timezone Asia/Kolkata
在我的例子中,Centos 8, DirectAdmin, Openlitespeed, php 7 (lsphp服务器必须运行Openlitespeed)
-
转到DirectAdmin(使用admin/root密码)->CustomBuild ->设置->选项→PHP设置->php_timezone→输入您的时区并保存时间间隔列表在这里:https://www.php.net/manual/en/timezones.php
-
return CustomBuild -Build ->选择PHP,然后单击build!
-
等待10分钟…
什么都没用,我在用FPM
在/etc/php/8.2/fpm/pool.d
中找到一个名为www.conf
的文件,编辑php_admin_value[date.timezone]
值,用sudo service php8.2-fpm
重新启动FPM,它工作了。
我正在使用Vultr,希望这个答案能在将来帮助到别人。