首页 > 解决方案 > Laravel 缓存视图中的 PHP League Commonmark $environment 错误

问题描述

将 Laravel 项目升级到 PHP8 后,我经常收到此错误:

Passing an $environment into the "League\CommonMark\CommonMarkConverter" constructor is deprecated in 1.6 and will not be supported in 2.0; use MarkdownConverter instead

堆栈跟踪显示它是由缓存视图文件中的这一行触发的:

<?php echo e(Illuminate\Mail\Markdown::parse($slot)); ?>

我已经多次删除了所有缓存的视图(我认为那里可能有一些旧的缓存视图),但这并没有解决它。

不确定这是否应该是报告的错误,因为这可能是在 Laravel 框架中修复的情况,但在升级到 PHP8 之前我从未遇到过这个错误,所以我认为它与此有关。

标签: phplaravelcommonmark

解决方案


我的头也撞到了这个。我一直在对降价文件进行更改,但它们从未出现过——就像 Laravel 指向错误的地方一样。它是...

正在开发一个升级的 Laravel 应用程序(IE 我从 5.x 开始并且随着时间的推移进行了升级),因此有两个潜在的问题。

首先,在ip/config/mail.php: 您可能必须实际创建降价路径。如果您在 markdown 之前发布了可邮寄的内容,则整个 markdown 邮件设置都将丢失。你可以从 git repo 中提取它们,或者为了方便起见从这里提取它们:

'markdown' => [
    'theme' => 'default',
    'paths' => [
        resource_path('views/vendor/mail'),
    ],
],

如果您之前发布了这些邮件文件,则第二个潜在问题(尽管在您的情况下不太可能),HTML 目录中的 Laravel 布局文件有or操作符,这会阻塞。将这三个运算符更改为??.

也许这会对您有所帮助,具体取决于您从哪里开始:)


推荐阅读