如何在 Linux 上配置 PHP 的时区

山海之间
山海之间
发布时间:2026-08-22 | 135人浏览过
原创

前言

PHP 时区配置看起来只是改一行 date.timezone,但真正容易出错的地方,往往是改错了配置文件、没分清 CLI 和 PHP-FPM,或者修改后忘了重启服务。下面按 Linux 上最常见的 4 种场景拆开说明,帮你判断每种方式的适用范围、操作步骤和生效条件。

PHP 时区没配对,最先出问题的往往不是页面显示,而是日志时间、时间戳计算和依赖时间判断的业务逻辑。本文把 Linux 上常见的 4 种配置方式拆开说明:你可以先判断自己用的是 CLI、Apache 还是 Nginx + PHP-FPM,再按对应路径修改 date.timezone,最后用命令确认是否真正生效。

为什么要先处理 PHP 时区

很多新手装好 PHP 后,默认会忽略时区设置,但这一步其实很基础。时区不一致时,常见影响包括:

  • 日志记录时间不准确,排查问题时容易对不上时间线;
  • 时间戳、定时任务或过期判断出现偏差;
  • 同一台服务器上,CLI、Web 和 PHP-FPM 的时间表现可能不一致。

如果你的目标是长期稳定运行,优先考虑修改 php.ini;如果只是测试结果,直接用命令行临时设置会更省事。

方法一:直接修改 PHP 配置文件

这是最常见、也最适合多数场景的做法。关键不是修改动作本身,而是先确认当前 PHP 实际加载的是哪个 php.ini。

修改 PHP 配置文件设置时区的操作流程图,展示查找配置文件、编辑 date.timezone 和重启服务三个关键步骤。
php.ini 设置时区流程全局配置最常见的问题,不是不会改,而是改错文件或忘记重启服务。

先找到正在使用的 php.ini

常见路径通常类似下面两种:

  • /etc/php/版本号/apache2/php.ini
  • /etc/php/版本号/cli/php.ini

不同发行版和 PHP 版本,实际路径可能略有差异。更稳妥的方式是直接执行:

php --ini

这个命令会直接显示当前环境加载的配置文件位置。

编辑文件并设置 date.timezone

确认路径后,用编辑器打开对应文件:

sudo nano /etc/php/版本号/apache2/php.ini

或者:

sudo nano /etc/php/版本号/cli/php.ini

找到 date.timezone,如果没有这一项,就手动添加:

date.timezone = "Asia/Shanghai"

如果使用的是 nano,保存退出方式仍然是 Ctrl + X、按 Y 确认,再按 Enter。

修改后别忘了让配置生效

只改文件还不够,服务端通常需要重新加载配置。

如果是 Apache:

sudo systemctl restart apache2

如果是 Nginx 配合 PHP-FPM:

sudo systemctl restart php-fpm

这一方式适合长期配置,尤其是你希望服务器重启后仍然保持同一时区时。

方法二:命令行临时设置时区

如果你只是想验证时区是否会影响脚本输出,或者不打算立刻修改主配置文件,可以先用环境变量测试。

当前终端会话内临时生效

在终端执行:

export TZ="Asia/Shanghai"

这只对当前 shell 会话有效,关闭终端后设置就会失效,不会改动系统或 PHP 的长期配置。

用 PHP 命令验证结果

设置后可以直接检查当前时区:

php -r 'echo date_default_timezone_get();'

正常情况下,输出应为 Asia/Shanghai。

这一方法适合临时测试、调试命令行脚本,或者在正式改配置前先确认目标时区写法是否正确。

方法三:通过 .htaccess 设置站点级时区

这一方式仅适用于 Apache,优点是不用改全局主配置,适合共享主机或只想让某个站点单独生效的情况。

在站点根目录编辑 .htaccess

进入网站根目录后,创建或编辑 .htaccess:

nano /path/to/your/website/.htaccess

加入时区配置指令

写入以下内容:

php_value date.timezone "Asia/Shanghai"

保存后通常无需手动重启服务,Apache 会自动读取这类目录级配置。

这类做法的重点在于“站点级控制”:它更灵活,但前提是当前环境允许在 .htaccess 中使用相关 PHP 配置指令。

方法四:针对 PHP-FPM 单独配置时区

如果你的环境是 Nginx + PHP-FPM,或者 PHP-FPM 与其他运行方式分开管理,那么最好直接修改 FPM 对应的 php.ini。

定位 PHP-FPM 配置文件

常见路径通常是:

  • /etc/php/版本号/fpm/php.ini

修改 date.timezone 并重启 PHP-FPM

编辑文件:

sudo nano /etc/php/版本号/fpm/php.ini

然后找到并设置:

date.timezone = "Asia/Shanghai"

修改完成后,重启 PHP-FPM:

sudo systemctl restart php-fpm

这一方式和全局改 php.ini 的思路接近,但更适合专门管理 PHP-FPM 进程的环境。

四种方式怎么选更合适

如果只看使用场景,可以这样判断:

PHP 时区配置方式选择图,按运行环境和生效范围区分 php.ini、.htaccess、临时命令和 PHP-FPM 配置。
PHP 时区配置方式选择图先判断运行环境和生效范围,再决定改全局配置、站点配置还是临时变量。
  • 想做长期、稳定的全局配置:优先选修改 php.ini;
  • 使用 Nginx + PHP-FPM:优先检查并修改 /etc/php/版本号/fpm/php.ini;
  • 只想针对某个 Apache 站点单独生效:可用 .htaccess;
  • 只是临时测试或验证输出:直接用 export TZ="Asia/Shanghai"。

最后再强调一次:同一台 Linux 服务器上,CLI、Apache 和 PHP-FPM 可能读取的并不是同一个配置文件。遇到“明明改了却没生效”的情况,优先检查加载路径,以及是否已经重启对应服务。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表