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

Laravel 5.8 Blade日期格式化代码Chrome/Firefox正常但Safari报错求助

问题根因与解决方案

核心代码错误

Blade的{{ }}本质是编译为PHP的echo结构,大括号内部禁止额外添加语句分号,代码末尾的分号会被Blade编译为带语法错误的PHP代码,这是最初全浏览器报错的根源。
Chrome、Firefox对HTML响应的容错率更高,移除分号后哪怕存在少量残留的编译异常、PHP警告输出,也会自动忽略并正常渲染页面;但Safari的HTML解析规则更严格,只要响应内容存在非预期的报错字符串、格式异常,就会直接展示报错提示,这也是调整代码后只有Safari仍报错的核心原因。
另外,直接使用strtotime($transaction->created_at)的写法属于冗余操作:Laravel的Eloquent模型时间戳字段会自动转换为Carbon实例,不需要额外做时间字符串转换,类型不匹配还容易触发PHP警告,额外输出异常内容。

正确代码写法

直接使用Carbon自带的格式化方法即可,不需要嵌套原生PHP时间函数:
{{ $transaction->created_at->format('d M Y') }}
如果需要使用原生date函数,可直接取Carbon实例的时间戳,规避类型转换问题:
{{ date('d M Y', $transaction->created_at->timestamp) }}

缓存清理无效的排查方向

执行cache:clear/config:clear/view:clear仅清除了本地磁盘存储的缓存文件,以下场景会导致错误结果持续存在:

  • 若使用队列异步发送邮件,常驻运行的队列进程会持有旧的视图编译结果、内存缓存,必须执行php artisan queue:restart重启队列进程,才能加载最新代码。
  • 检查config/app.php中的timezone参数,设置为项目实际使用的时区,避免时间计算异常触发PHP警告,将报错内容输出到邮件HTML中。
  • 确认.env文件中的APP_DEBUG配置,生产环境需设置为false,关闭PHP错误、警告的直接输出,避免异常内容嵌入HTML被Safari识别为报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 17:57:03