ini_get('date.timezone') 返回 php.ini 中显式配置的时区值,若为空说明未设置或无效;实际生效时区应使用 date_default_timezone_get() 获取,其优先级为运行时设置>php.ini>系统默认。

PHP 8.0 中,ini_get('date.timezone') 可以直接获取 php.ini 中配置的时区值,但前提是该配置项确实被显式设置(非注释状态)且未被运行时函数(如 date_default_timezone_set())覆盖。
确认 php.ini 中已正确配置 date.timezone
打开你的 php.ini 文件(可通过 php --ini 或 phpinfo() 查找路径),确保包含如下非注释行:
-
date.timezone = "Asia/Shanghai"(推荐使用 IANA 时区标识符) - 不要写成
date.timezone = "GMT+8"或"China"等无效值,PHP 会忽略并触发警告 - 保存后务必重启 Web 服务器(如 Apache/Nginx)或 PHP-FPM 进程,使更改生效
用 ini_get() 获取时区配置
在 PHP 脚本中直接调用:
<?php $timezone = ini_get('date.timezone');
var_dump($timezone); // 输出 string(13) "Asia/Shanghai" 或空字符串
?>
注意:
- 若返回空字符串(
""),说明php.ini中未设置或配置无效 - 若返回
false,通常表示该配置项不存在或被禁用(极少见) -
ini_get()只读取配置文件原始值,不反映运行时通过date_default_timezone_set()修改的结果
验证实际生效的时区(含运行时覆盖)
要查看当前脚本真正使用的时区(含代码动态设置),应使用:
-
date_default_timezone_get()— 返回当前生效的时区(优先级:运行时设置 > php.ini > 系统默认) -
date('e')或date('T')— 实际格式化时间时所用的时区标识或缩写
常见问题排查
如果 ini_get('date.timezone') 返回空但 phpinfo() 显示有值:
- 检查是否加载了多个
php.ini(CLI 和 Web SAPI 配置可能不同) - 确认你查看的是当前环境对应的
php.ini(例如php -i | grep 'Loaded Configuration File') - 某些 Docker 或云环境会通过环境变量或启动脚本覆盖配置,需检查启动逻辑
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











