网站引擎 API 地址配置有问题
参考资料
网站引擎 API 地址配置有问题
这两个错误日志揭示了同一个根因:Laravel 的日志系统配置不完整,而更深层的问题是 Guzzle HTTP 客户端在 PHP 8.3 下因废弃警告触发了日志系统的崩溃。
🚨 错误链路还原
触发点:网站引擎(Website Engine)通过 Guzzle 向 Fresns 主程序 API 发起请求,传递了
X-Fresns-Client-Platform-Id这个 Header,但它的值是一个整数(int)而非字符串。PHP 8.3 的严格检查:Guzzle 7.11 在 PHP 8.3 下检测到这种类型不符合规范,触发了一个
Deprecation Warning(废弃警告)。Laravel 的日志机制:Laravel 会尝试将这个废弃警告写入名为
deprecations的日志通道。配置缺失导致崩溃:你的
config/logging.php中没有定义deprecations这个通道,Laravel 找不到它,于是抛出InvalidArgumentException: Log [deprecations] is not defined,导致日志系统降级到紧急模式。连锁反应:日志系统崩溃后,原本的 Guzzle 警告无法被正常记录,最终导致
HttpHelper在处理 API 响应时拿到了异常数据(null),引发了第一个文件中看到的Trying to access array offset on null错误。
🛠️ 解决方案
第一步:修复日志配置(解决 EMERGENCY 错误)
编辑 Fresns 根目录下的 config/logging.php 文件,在 channels 数组中添加一个 deprecations 通道:
'channels' => [
// ... 其他通道保留不动
'deprecations' => [
'driver' => 'single',
'path' => storage_path('logs/deprecations.log'),
'level' => 'debug',
],
],第二步:彻底关闭该通道的日志写入(可选,更彻底)
如果你不想记录这些废弃警告,可以在 .env 文件中设置:
LOG_DEPRECATIONS_CHANNEL=null
第三步:清理配置缓存(关键!)
修改配置后,必须删除配置缓存,否则修改不会生效:
rm -f bootstrap/cache/config.php php artisan config:clear
第四步:重启 Octane 服务
由于你在使用 Octane(Swoole),修改配置后必须重启 Octane 进程才能加载新配置。
💡 针对“数组偏移 on null”的额外提示
完成上述日志修复后,API 请求应该能正常返回数据,第一个错误大概率会随之消失。如果 Trying to access array offset on null 仍然出现,说明你的 网站引擎 API 地址配置有问题,请检查:
网站引擎是否配置为 “本地(Local)” 模式,并指向当前主程序 API。
在 Fresns 后台 客户端 → 应用密钥 中,为网站引擎生成并配置了正确的 API Key。
完成这些步骤后,建议重启 PHP 和 Octane 进程,再访问帖子详情页验证问题是否解决。
时间:2026-10-02 10:08:30
来源:https://fresns.ciilii.com/
