php默认使用utc时区,需配置为"asia/shanghai"以匹配北京时间;可通过修改php.ini、脚本中date_default_timezone_set()、.htaccess(apache)、docker环境变量或云平台设置实现。

PHP默认使用UTC(格林威治标准时间),若不配置,date()、strtotime()等函数返回的时间会比北京时间慢8小时。正确配置时区是避免时间错乱、定时任务偏差和数据库时间写入错误的前提。
修改php.ini全局设置(推荐用于独立服务器)
这是最稳定、一劳永逸的方式,适用于你有服务器管理权限的场景:
- 先通过
php --ini(命令行)或phpinfo()(Web页面)确认正在使用的 php.ini 路径 - 用编辑器打开该文件,搜索
date.timezone - 取消注释(删掉行首分号),并设为:
date.timezone = "Asia/Shanghai"(国内通用,等效于PRC) - 保存后,必须重启 Web 服务(如 Apache/Nginx)和 PHP-FPM(或 php-cgi)才能生效
在PHP脚本中动态设置(适合共享主机或快速验证)
无需服务器权限,只需在每个脚本最开头(任何时间函数调用前)加入:
date_default_timezone_set('Asia/Shanghai');- 建议紧随其后加一句验证:
echo date_default_timezone_get(); // 应输出 Asia/Shanghai - 注意:该设置仅对当前请求有效,不能跨脚本或跨请求继承
通过.htaccess设置(仅限Apache模块模式)
适用于Apache + mod_php环境,且允许 AllowOverride 配置的目录:
- 在网站根目录或目标子目录下编辑或新建
.htaccess - 添加一行:
php_value date.timezone "Asia/Shanghai" - 确保 Apache 已启用
mod_php,且AllowOverride至少包含FileInfo
Docker或云环境中的配置方式
容器化部署时,推荐用环境变量或配置挂载,避免每次重建镜像都改配置:
- Docker启动时传入:
-e PHP_INI_DATE_TIMEZONE=Asia/Shanghai - 或在 Dockerfile 中写:
ENV TZ=Asia/Shanghai && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime - 部分云平台(如阿里云函数计算、腾讯云SCF)支持直接在控制台设置 PHP 环境变量
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











