在常规设置中,本地时间显示为等同于(正确的)UTC时间。
错误下方不显示其他设置,也没有保存更改按钮。
在日志记录中,当我grep
对于选项列表中的时区,使用wp option list | grep -i zone
:
PHP Warning: timezone_open(): Unknown or bad timezone (America/Phoenix) in /var/www/union_made_sites/shirts/wp-includes/functions.php on line 5228
Warning: timezone_open(): Unknown or bad timezone (America/Phoenix) in /var/www/union_made_sites/shirts/wp-includes/functions.php on line 5228
timezone_string America/Phoenix
以下是包含以下php代码的测试文件的结果:
<?php
require_once("../../../../wp-load.php");
echo date(\'Y-m-d G:i:s\');
?>
<p>
<?php
echo current_time(\'mysql\');
?>
<p>
<?php
echo "This is GMT Offset:";
echo get_option(\'gmt_offset\');
?>
我在Ubuntu上,我正在使用
/etc/php/7.3/apache2/php.ini
要配置
mod_php
. 我已经定好日期了。在此文件中明确显示时区,如下所示:
date.timezone = "America/Phoenix"
我可以确认这一点
.ini
文件通过加载
phpinfo()
:
所有活动插件都与日历或日程安排无关。
在wp_options
数据库的表timezone_string
选项的值为America/Phoenix
, 但是gmt_offset
是空字符串。
更新表格和设置gmt_offset
到-7
除了在“常规设置”屏幕中显示正确的本地时间外,没有任何改进;wp-cli
仍然会抛出相同的错误,显示有关“技术困难”的警告,并且“常规设置”屏幕的下半部分不会出现。
SO网友:chb
当我开始解决这个问题时,我发现gmt_offset
作为罪魁祸首,并认为服务器是可靠的。但在我更新了数据库中的gmt\\u偏移量值并且错误依然存在之后,我知道我错了。
一位管理员在一个WP论坛上发帖表示,尽管有一个有效的时区,但事情还是有问题。他的问题是时区的循环软链接(America/New_York
链接到EST
, 它本身是一个软链接,链接回America/New_York
). 读到这一点后,我确认在我自己的服务器上并非如此。
然而,回头检查系统时,我注意到,当我在另一个环境(工作正常)上比较时区文件的权限(是的,总是权限)时,我注意到工作环境(顶部)之间存在这种差异。。。
]# ls -alh /usr/share/zoneinfo/America/Phoenix
lrwxrwxrwx 1 root root 15 Aug 31 13:40 /usr/share/zoneinfo/America/Phoenix -> ../SystemV/MST7
]# ls -alh /usr/share/zoneinfo/SystemV/MST7
-rw-r--r-- 1 root root 353 Jul 4 14:46 /usr/share/zoneinfo/SystemV/MST7
。。。问题服务器。。。
]# ls -alh /usr/share/zoneinfo/America/Phoenix
lrwxrwxrwx 1 root root 15 Jul 4 14:46 /usr/share/zoneinfo/America/Phoenix -> ../SystemV/MST7
]# ls -alh /usr/share/zoneinfo/SystemV/MST7
-rwxrw---- 1 root root 353 Jul 4 14:46 /usr/share/zoneinfo/SystemV/MST7
chmod 644
问题解决了。