如何将phpEnv中的PHP时区设置为PRC?
- 内容介绍
- 文章标签
- 相关推荐
本文共计671个文字,预计阅读时间需要3分钟。
原文:
phpEnv 的 php.ini 文件在哪找
phpEnv 默认不把 php.ini 放在 PHP 安装目录根路径,而是按版本分散管理:
- 路径通常为:
%USERPROFILE%\phpEnv\php\{version}\php.ini(Windows)或~/.phpenv/versions/{version}/etc/php.ini(macOS/Linux) - 用 phpEnv 切换版本后,运行
php --ini可确认实际加载的配置文件路径 - 别改错文件:phpEnv 可能同时存在
php.ini-development和php.ini-production,确保编辑的是当前生效的那个(Loaded Configuration File显示的路径)
在 php.ini 中正确配置 PRC 时区
找到 date.timezone 配置项,取消注释并设为 PRC 或更推荐的 Asia/Shanghai:
date.timezone = Asia/Shanghai
注意以下几点:
立即学习“PHP免费学习笔记(深入)”;
-
PRC虽然在旧版 PHP 中可用,但自 PHP 7.0+ 起已标记为“deprecated”,部分构建(尤其是非 Windows 的 phpEnv 编译包)可能直接报错或静默失效 -
Etc/GMT-8是反直觉写法:它表示 GMT+8 的「等效偏移」,但 POSIX 时区命名规则中Etc/GMT-8实际对应 UTC+8(即北京时间),不过 phpEnv 下兼容性不稳定,不建议使用 - 改完必须重启 Web 服务(如 Apache/Nginx)或 CLI 环境(关闭再重开终端),否则
date_default_timezone_get()仍返回UTC
验证是否生效,别只信 echo date()
仅用 echo date('Y-m-d H:i:s'); 看输出时间,无法确认时区是否真正生效 —— 它可能只是格式化了错误的 timestamp。应检查底层配置:
- 执行
php -r "echo date_default_timezone_get();",输出应为Asia/Shanghai - 运行
php -i | findstr "timezone"(Windows)或php -i | grep timezone(macOS/Linux),确认date.timezone值已加载且无 warning - 如果仍看到警告
It is not safe to rely on the system's timezone settings,说明 php.ini 没生效,或你改的是错误版本的配置文件
真正麻烦的点在于:phpEnv 启动不同 PHP 版本时,可能各自缓存 ini 加载状态;哪怕改对了文件,也得确认当前 shell 环境下 which php 指向的是你修改的那个版本。漏掉这一步,调试半天都在改“别人”的配置。
本文共计671个文字,预计阅读时间需要3分钟。
原文:
phpEnv 的 php.ini 文件在哪找
phpEnv 默认不把 php.ini 放在 PHP 安装目录根路径,而是按版本分散管理:
- 路径通常为:
%USERPROFILE%\phpEnv\php\{version}\php.ini(Windows)或~/.phpenv/versions/{version}/etc/php.ini(macOS/Linux) - 用 phpEnv 切换版本后,运行
php --ini可确认实际加载的配置文件路径 - 别改错文件:phpEnv 可能同时存在
php.ini-development和php.ini-production,确保编辑的是当前生效的那个(Loaded Configuration File显示的路径)
在 php.ini 中正确配置 PRC 时区
找到 date.timezone 配置项,取消注释并设为 PRC 或更推荐的 Asia/Shanghai:
date.timezone = Asia/Shanghai
注意以下几点:
立即学习“PHP免费学习笔记(深入)”;
-
PRC虽然在旧版 PHP 中可用,但自 PHP 7.0+ 起已标记为“deprecated”,部分构建(尤其是非 Windows 的 phpEnv 编译包)可能直接报错或静默失效 -
Etc/GMT-8是反直觉写法:它表示 GMT+8 的「等效偏移」,但 POSIX 时区命名规则中Etc/GMT-8实际对应 UTC+8(即北京时间),不过 phpEnv 下兼容性不稳定,不建议使用 - 改完必须重启 Web 服务(如 Apache/Nginx)或 CLI 环境(关闭再重开终端),否则
date_default_timezone_get()仍返回UTC
验证是否生效,别只信 echo date()
仅用 echo date('Y-m-d H:i:s'); 看输出时间,无法确认时区是否真正生效 —— 它可能只是格式化了错误的 timestamp。应检查底层配置:
- 执行
php -r "echo date_default_timezone_get();",输出应为Asia/Shanghai - 运行
php -i | findstr "timezone"(Windows)或php -i | grep timezone(macOS/Linux),确认date.timezone值已加载且无 warning - 如果仍看到警告
It is not safe to rely on the system's timezone settings,说明 php.ini 没生效,或你改的是错误版本的配置文件
真正麻烦的点在于:phpEnv 启动不同 PHP 版本时,可能各自缓存 ini 加载状态;哪怕改对了文件,也得确认当前 shell 环境下 which php 指向的是你修改的那个版本。漏掉这一步,调试半天都在改“别人”的配置。

