通过phpinfo()或php --ini可定位php.ini路径;web与cli环境配置可能不同,需分别验证;date.timezone应设为asia/shanghai(不加引号),修改后重启服务并用date_default_timezone_get()和datetimezone::getoffset()确认生效。

直接在浏览器中访问一个包含 phpinfo() 的 PHP 文件,页面会完整显示当前 PHP 运行环境的全部配置信息。其中关键一项是 Loaded Configuration File(已加载的配置文件),它明确告诉你正在使用的 php.ini 文件的绝对路径。
怎么快速定位 php.ini 路径
新建一个 info.php 文件,内容只有一行:
<?php phpinfo(); ?>
将它放到 Web 服务器可访问目录(如 Nginx 的 /var/www/html/ 或 Apache 的 /var/www/),然后通过浏览器打开 http://你的域名/info.php。
在页面中用 Ctrl+F 搜索 Loaded Configuration File,找到对应值。如果显示为 (none),说明当前 SAPI(比如 CLI)未加载任何 php.ini,或使用的是默认内置配置。
CLI 环境下也要单独确认
命令行运行 PHP 时,用的是另一套配置路径,和 Web 不一定相同。执行以下命令查看 CLI 使用的配置:
-
php --ini—— 显示配置文件位置及扫描目录 -
php -i | grep "Loaded Configuration File"—— 直接过滤出 CLI 加载的php.ini路径
注意:PHP-FPM、Apache 模块、CLI 三者可能各自加载不同的 php.ini,务必按实际运行环境分别验证。
查到路径后检查 date.timezone 是否生效
打开对应的 php.ini 文件,查找 date.timezone 行:
- 如果该行被注释(开头有
;)且无值,说明未设置时区 - 如果写成
date.timezone = "Asia/Shanghai"(带引号)—— PHP 会忽略,必须去掉引号 - 正确写法是:
date.timezone = Asia/Shanghai(大小写敏感,不加引号)
修改保存后,Web 环境需重启 PHP-FPM 或 Web 服务;CLI 环境无需重启,但下次执行脚本时自动读取新配置。
验证时区是否真正起作用
仅看 date('Y-m-d H:i:s') 输出“像北京时间”不可靠。应使用:
var_dump(date_default_timezone_get()); → 必须返回 string(13) "Asia/Shanghai"
再配合:
$tz = new DateTimeZone('Asia/Shanghai'); echo $tz->getOffset(new DateTime()); → 应输出 28800(即 +08:00 秒)
若返回空、UTC 或 0,说明配置未生效,或被后续代码覆盖。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











