1

将 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 之前我从未遇到过这个错误,所以我认为它与此有关。

4

3 回答 3

0

我的头也撞到了这个。我一直在对降价文件进行更改,但它们从未出现过——就像 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操作符,这会阻塞。将这三个运算符更改为??.

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

于 2021-05-11T19:34:28.370 回答
0

最终结果是我在 Laravel Forge 上将我的 PHP 版本设置为 8,但在我用于部署的 Laravel Envoyer 上却没有……希望这对拥有相同设置的人有所帮助!

于 2021-06-22T09:52:37.063 回答
0

您收到的错误应该是 1.6.0 版本中添加的无声弃用错误league/commonmark。不幸的是,有一个错误导致它成为“用户通知”而不是弃用通知。升级到已修复league/commonmark此问题的1.6.2可能会解决此问题。

如果您在升级后仍然收到错误(并确保 PHP 的 opcache 已被清除),那么 Laravel 或您的代码中的其他东西很可能正在捕获并报告这个沉默的错误 - 这是一件好事,因为我们希望人们知道这一点功能已被弃用并将被删除,但它不应该向您的日志发送垃圾邮件,因此请仔细检查 Laravel 或 PHP 中与错误日志记录、错误级别和日志记录相关的任何设置。

资料来源:我是league/commonmark.

于 2021-05-12T11:46:55.720 回答