PHP 怎么PHP 时区设置

wen PHP项目 1

本文目录导读:

PHP 怎么PHP 时区设置

  1. 修改 php.ini 配置文件(全局生效)
  2. 在代码中动态设置(推荐,单个脚本生效)
  3. .htaccess 文件中设置(Apache 专用)
  4. nginx + PHP-FPM 中设置
  5. 如何检查当前时区
  6. 时区列表获取
  7. 最佳实践建议

在 PHP 中设置时区,主要有以下 4 种方法,按优先级从低到高排列(高优先级会覆盖低优先级):


修改 php.ini 配置文件(全局生效)

找到 php.ini 文件,搜索 date.timezone

date.timezone = Asia/Shanghai

常见时区:

  • 中国:Asia/ShanghaiAsia/Chongqing
  • 台湾:Asia/Taipei
  • 香港:Asia/Hong_Kong
  • 新加坡:Asia/Singapore
  • 日本:Asia/Tokyo
  • 美国东部:America/New_York

修改后需要重启 Web 服务器(Apache/Nginx)或 PHP-FPM 生效。


在代码中动态设置(推荐,单个脚本生效)

date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s'); // 输出北京时间

特点:

  • 仅对当前脚本及后续代码生效
  • 适合不同用户或不同请求需要不同时区的情况
  • 不需要服务器权限

.htaccess 文件中设置(Apache 专用)

php_value date.timezone "Asia/Shanghai"

注意: 需要服务器开启了 AllowOverride Options 且 PHP 以 Apache 模块运行。


nginx + PHP-FPM 中设置

php-fpm.conf/etc/php/8.x/fpm/pool.d/www.conf 中添加:

php_admin_value[date.timezone] = Asia/Shanghai

然后重启 PHP-FPM:

sudo systemctl restart php8.1-fpm

如何检查当前时区

echo date_default_timezone_get(); // 输出当前时区

时区列表获取

查看所有可用时区:

php -r "print_r(timezone_identifiers_list());"

或在 PHP 中输出:

print_r(DateTimeZone::listIdentifiers());

最佳实践建议

  1. 开发环境:php.ini 统一设置
  2. 生产环境: 如果项目有国际化需求(不同用户时区不同),在每个请求入口(如 index.php)用 date_default_timezone_set() 按用户设置
  3. 框架项目: 大多数框架(Laravel、ThinkPHP 等)都有配置文件可以设置时区,优先使用框架的配置方式

示例(Laravel):

// config/app.php
'timezone' => 'Asia/Shanghai',

只要选择一种适合自己的方式设置一次,后续的 date()DateTime 类等就会自动使用正确的时区。

抱歉,评论功能暂时关闭!