You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站访问白屏,PHP DateTimeZone及default_timezone报错求助

解决网站白屏与PHP时区配置错误问题

从你提供的Apache错误日志和代码片段来看,网站白屏的原因非常清晰——你的$CFG对象的default_timezone属性是空值,这直接引发了一系列PHP错误,最终导致脚本终止,页面无法正常渲染。

错误日志关键点解析

我们先拆解下日志里的核心错误信息:

  • PHP Notice: Undefined property: object::$default_timezone:这说明$CFG对象并没有被正确初始化default_timezone属性,或者该属性的值为空字符串。
  • PHP Notice: date_default_timezone_set(): Timezone ID '' is invalid:尝试用空字符串设置PHP默认时区,这显然不符合PHP的时区规范,所以抛出警告。
  • PHP Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone ():当你尝试用空字符串实例化DateTimeZone类时,PHP直接抛出致命异常,脚本停止执行——这就是页面白屏的直接原因。

代码问题定位

看你提供的common.php第92-95行代码:

date_default_timezone_set($CFG->default_timezone); 
$dtz = new DateTimeZone($CFG->default_timezone); 
$dtz1 = new DateTime('now', $dtz); 
$CFG->timezone_offset = $dtz->getOffset($dtz1); 

这段代码完全依赖$CFG->default_timezone有合法的时区值,但目前这个变量是空的,所以所有依赖它的操作都会失败。

解决方案步骤

  1. 检查$CFG对象的初始化逻辑
    找到$CFG对象被创建或配置加载的地方,确保default_timezone属性被设置为PHP支持的合法时区标识符,比如'Asia/Shanghai'、'Europe/Paris'等。示例代码:

    // 在$CFG初始化处添加或修正时区配置
    $CFG->default_timezone = 'Asia/Shanghai'; // 替换为你实际需要的时区
    
  2. 排查配置文件(如果是从配置读取)
    如果$CFG->default_timezone是从配置文件(比如config.ini、config.php)读取的,检查配置文件中对应的时区项:

    • 确认配置项存在,没有被注释掉
    • 时区标识符拼写正确(比如不要写成'Shanghai',必须是PHP官方支持的格式)
  3. 临时应急修复(快速恢复页面)
    如果你需要先让网站恢复访问,可以修改common.php的代码,给时区设置一个默认值兜底:

    // 先判断时区是否为空,为空则使用默认合法时区
    $valid_timezone = !empty($CFG->default_timezone) ? $CFG->default_timezone : 'Asia/Shanghai';
    date_default_timezone_set($valid_timezone); 
    $dtz = new DateTimeZone($valid_timezone); 
    $dtz1 = new DateTime('now', $dtz); 
    $CFG->timezone_offset = $dtz->getOffset($dtz1); 
    
  4. 开发环境开启错误显示
    为了以后更快排查问题,在开发环境可以开启PHP错误显示,这样错误会直接显示在页面上,不用每次查日志:

    // 在index.php开头添加
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    

    注意:生产环境一定要关闭这个设置,避免泄露服务器敏感信息。

额外提醒

你提到服务器已经配置了时区,但这里的问题是应用层面没有正确获取或设置时区值,和服务器系统时区配置无关。需要确保应用的配置加载逻辑能正确读取到时区设置,或者直接在应用代码中显式指定合法时区。

内容的提问来源于stack exchange,提问作者nonamewawrsaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:55:47