如何将phpEnv中的PHP时区设置为PRC?

2026-04-27 20:421阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计671个文字,预计阅读时间需要3分钟。

如何将phpEnv中的PHP时区设置为PRC?

原文:

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-developmentphp.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 指向的是你修改的那个版本。漏掉这一步,调试半天都在改“别人”的配置。

标签:phpenvPHP

本文共计671个文字,预计阅读时间需要3分钟。

如何将phpEnv中的PHP时区设置为PRC?

原文:

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-developmentphp.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 指向的是你修改的那个版本。漏掉这一步,调试半天都在改“别人”的配置。

标签:phpenvPHP