PHP页面时间偏差8小时是因时区未设为Asia/Shanghai,需通过date_default_timezone_set()、修改php.ini的date.timezone或.htaccess中php_value设置,并验证date_default_timezone_get()返回Asia/Shanghai且时间与本地一致。

PHP 8.2 页面显示时间比实际快或慢 8 小时,基本是服务器默认时区没设对,和 PHP 版本关系不大,关键在时区配置。
确认当前时区设置
先查 PHP 实际用的时区,新建一个 PHP 文件写:
echo date_default_timezone_get();<br>print_r(date('Y-m-d H:i:s e'));
如果输出是 UTC 或 Europe/London 等非中国时区,就说明没设成东八区(Asia/Shanghai)。
三种常用方式设为东八区(Asia/Shanghai)
-
代码中临时设置:在页面最开头加一行
date_default_timezone_set('Asia/Shanghai');,适用于单页或不想改全局配置的情况。 -
修改 php.ini:找到你的 php.ini 文件(可用
php --ini查路径),找到date.timezone =这行,取消注释并改成:date.timezone = Asia/Shanghai,然后重启 Web 服务(如 Apache 或 Nginx + PHP-FPM)。 -
运行时动态设置(适合共享主机):在 .htaccess(Apache)或 php.ini 用户配置、或用户级 ini 文件中加入:
php_value date.timezone "Asia/Shanghai"
注意系统时间和 PHP 时区要区分
Linux 服务器系统时区(timedatectl 查)不影响 PHP 时间,PHP 完全依赖自己的 date.timezone 设置。即使系统是 CST,PHP 仍可能按 UTC 解析 time() 或 date(),所以必须显式设 PHP 时区。
立即学习“PHP免费学习笔记(深入)”;
验证是否生效
改完后刷新页面,再次运行开头那段检测代码,应看到:
Asia/Shanghai<br>2024-06-15 14:30:25 Asia/Shanghai
且和你本地电脑时间基本一致(误差在秒级内)。



















