ubuntu 20.04 需分别设置系统级和 php 运行时两层时区:系统级用 sudo timedatectl set-timezone asia/shanghai,php 级在对应 php.ini 中设 date.timezone = "asia/shanghai" 并重启服务验证。

Ubuntu 20.04 安装 PHP 8.0 后,系统时区需分两层设置:一是 Linux 系统级时区(影响 date、cron、日志时间戳等),二是 PHP 运行时的时区(影响 date()、strtotime()、DateTime 等函数输出)。两者独立,必须分别配置,否则会出现“终端显示是北京时间,但 PHP 输出却是 UTC”的情况。
设置 Ubuntu 系统级时区
这是基础,确保整个系统(包括 cron、shell、日志)使用正确本地时间:
- 查看当前时区:
timedatectl,重点关注 Time zone 行 - 列出可用时区并筛选中国区域:
timedatectl list-timezones | grep Asia/Shanghai - 设为东八区(上海/北京):
sudo timedatectl set-timezone Asia/Shanghai - 验证是否生效:
date应显示 CDT 或 CST 结尾的本地时间(如Wed 15 Oct 2026 03:17:22 CST)
设置 PHP 运行时默认时区
PHP 不自动继承系统时区,必须显式指定。注意:CLI 和 Web(Apache/FPM)可能使用不同 php.ini 文件:
- 先确认正在使用的配置文件:
php --ini(CLI)或php -i | grep "Loaded Configuration File"(Web 环境下运行phpinfo()更可靠) - 常见路径示例:
• Apache 模块:/etc/php/8.0/apache2/php.ini
• PHP-FPM:/etc/php/8.0/fpm/php.ini
• CLI:/etc/php/8.0/cli/php.ini - 用 nano 编辑对应文件:
sudo nano /etc/php/8.0/apache2/php.ini - 查找或新增一行:
date.timezone = "Asia/Shanghai"(注意等号前后无空格,引号必须) - 保存退出(Ctrl+O → Enter → Ctrl+X)
重启服务使 PHP 配置生效
修改 php.ini 后,不重启服务,改动不会加载:
- 若用 Apache + mod_php:
sudo systemctl restart apache2 - 若用 Apache + PHP-FPM:
sudo systemctl restart php8.0-fpm && sudo systemctl restart apache2 - 若用 Nginx + PHP-FPM:
sudo systemctl restart php8.0-fpm && sudo systemctl restart nginx
验证 PHP 时区是否正确
创建测试文件(如 /var/www/html/timecheck.php):
通过浏览器或命令行访问:php /var/www/html/timecheck.php 或访问 http://localhost/timecheck.php
应输出 Asia/Shanghai 及当前北京时间(非 UTC 时间)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











