在将Laravel项目升级到PHP8后,我经常会遇到以下错误:
Passing an $environment into the "LeagueCommonMarkCommonMarkConverter" constructor is deprecated in 1.6 and will not be supported in 2.0; use MarkdownConverter instead
堆栈跟踪显示它是由缓存视图文件中的这一行触发的:
<?php echo e(IlluminateMailMarkdown::parse($slot)); ?>
我已经多次删除了所有缓存的视图(我以为可能有一些旧的缓存视图(,但这并没有解决问题
不确定这是否应该是一个报告的错误,因为这可能是在Laravel框架中修复的,但在升级到PHP8之前,我从未遇到过这个错误,所以我认为这与此有关。
我的头也撞到了这个。我一直在修改降价文件,但它们从来没有出现过——就像Laravel指错了地方一样。它是。。。
我正在开发一个升级的Laravel应用程序(即,我从5.x开始,并随着时间的推移进行了升级(,因此存在两个潜在问题。
首先,在ip/config/mail.php
中:您可能必须实际创建markdown路径。如果在降价之前发布了邮件,则会丢失整个降价邮件设置。你可以从git repo中提取它们,或者为了方便起见从这里提取:
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
第二个潜在的问题(尽管在您的情况下不太可能(如果您早些时候发布了这些邮件文件,HTML目录中的Laravel布局文件具有or
运算符,这将阻塞。将这三个运算符更改为??
。
也许这会对你有所帮助,这取决于你从哪里开始:(
您收到的错误应该是league/commonmark
1.6.0版本中添加的静默弃用错误。不幸的是,有一个错误导致它成为";用户通知";而不是贬损通知。将league/commonmark
升级到1.6.2可能会解决此问题。
如果您在升级后仍然收到错误(并确保PHP的操作缓存已被清除(,则很可能是Laravel或您代码中的其他东西正在捕获并报告此静默错误-这是一件好事,因为我们希望人们知道此功能已被弃用并将被删除,但它不应该向您的日志发送垃圾邮件,因此,请仔细检查Laravel或PHP中与错误日志记录、错误级别和日志记录相关的任何设置。
来源:我是league/commonmark
的维护者。
最终,我在Laravel Forge上将我的PHP版本设置为8,但在我用于部署的Laravel Envoyer上没有。。。希望这能帮助到有同样设置的人!
我也遇到了这个错误。我通过降级league/commonmark
来修复它,请参阅
composer require league/commonmark 1.6.7
php artisan view:cache
发布可邮寄模板php artisan vendor:publish --tag=laravel-mail
后