phpMyAdmin不支持为每个MySQL服务器单独配置PHP时区,因PHP时区是全局设置,只能通过php.ini的date.timezone或index.php中date_default_timezone_set()统一设定;MySQL时区需独立配置default-time-zone或SET time_zone。
phpmyadmin 本身不支持为每个 mysql 服务器单独配置 php 时区。时区是 php 运行环境的全局设置,不是 per-server 的连接参数。所谓“为某台服务器设时区”,实际影响的是整个 phpmyadmin 页面的日期函数(如 date()、strtotime())和部分时间显示逻辑,与 mysql 实例本身无关。
phpMyAdmin 的服务器配置数组 $cfg['Servers'] 只接受数据库连接相关字段:host、port、auth_type、user、password 等。它没有 timezone 或 php_timezone 这类键。你往里面加 $cfg['Servers'][1]['timezone'] = 'Asia/Shanghai' 不会生效,PHP 解析时会忽略,甚至可能因语法错误导致整个配置加载失败。
所有 phpMyAdmin 请求共享同一套 PHP SAPI 环境,因此时区必须在更上层统一设定:
index.php 或 libraries/common.inc.php)顶部调用 date_default_timezone_set('Asia/Shanghai')
php.ini 中的 date.timezone,例如:date.timezone = Asia/Shanghai
这两个方式效果等价,但优先级不同:date_default_timezone_set() 覆盖 php.ini;若没显式调用,则回退到 php.ini 值。无论选哪种,它对所有已配置的 MySQL 服务器都一视同仁。
如果你关心的是「某台 MySQL 实例内部的时间行为」,那要操作的是 MySQL 本身,不是 phpMyAdmin:
立即学习“PHP免费学习笔记(深入)”;
SET time_zone = '+08:00';(会话级,只对当前连接有效)/etc/mysql/my.cnf)中设 default-time-zone = '+08:00'(全局,需重启)SET time_zone,它不改变 PHP 时区,也不持久化注意:MySQL 的 time_zone 和 PHP 的 date.timezone 是两套独立系统。PHP 时区影响 phpMyAdmin 界面里显示的当前时间、导出文件名里的日期等;MySQL 时区影响 NOW()、CURRENT_TIMESTAMP 等函数返回值。
当多个 MySQL 实例位于不同时区(比如一台在东京、一台在纽约),你无法靠 phpMyAdmin 配置让它们“各自显示本地时间”。唯一可靠的做法是:
UTC(推荐 date.timezone = UTC)SYSTEM 或 +00:00 存储时间戳强行把 PHP 时区设成某个服务器的本地时区,会导致其他服务器的时间显示全错,而且导出 SQL 里的 INSERT ... VALUES (NOW()) 也会混入错误时区偏移。