将服务器PHP从5.6升级至7.2后时区变为UTC的问题排查
原因分析
这个情况在WHM切换PHP版本时挺常见的,核心原因是不同PHP版本在WHM环境下拥有独立的配置文件:
- 你之前使用PHP 5.6时,对应的
php.ini文件里已经手动设置了EST时区(一般是date.timezone = America/New_York); - 切换到PHP 7.2后,WHM会加载该版本的默认配置模板,而PHP 5.4及以上版本的默认时区就是UTC,新的
php.ini并没有继承旧版本的时区设置,所以出现了PHP时区跳变。另外要注意,服务器系统时区和PHP的时区配置是相互独立的两个设置,所以服务器本身时区不会受PHP版本切换影响。
最简单的修复方法
推荐两种高效的修复方式,优先用图形界面操作更省心:
方法1:通过WHM图形界面修改全局时区
- 登录WHM控制面板,找到MultiPHP INI Editor(多PHP INI编辑器);
- 切换到Editor Mode(编辑模式),在顶部的PHP版本下拉菜单中选中PHP 7.2;
- 在配置文件中找到
date.timezone项,将值修改为你需要的时区(比如America/New_York对应EST); - 点击页面底部的Save保存,配置会立即生效,无需重启服务。
方法2:SSH手动编辑PHP 7.2配置文件(适合习惯命令行的用户)
- 通过SSH登录服务器,先确认PHP 7.2的
php.ini路径:
一般路径是php -i | grep php.ini/opt/cpanel/ea-php72/root/etc/php.ini或/usr/local/lib/php.ini; - 用编辑器打开该文件(比如
nano),找到date.timezone行,修改为:date.timezone = America/New_York - 保存文件后,重启PHP-FPM服务使配置生效:
systemctl restart ea-php72-php-fpm
小贴士:如果仅需给单个网站设置时区,也可以在网站根目录的
.htaccess文件中添加php_value date.timezone "America/New_York",不过这种方式只针对单个站点生效,全局统一修改还是上面两种方法更高效。
内容的提问来源于stack exchange,提问作者rockyraw
相关产品推荐
相关产品推荐

