在将一个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之前,我从未遇到过这个错误,所以我认为它与此相关。
发布于 2021-05-12 03:34:28
我的头也被这个撞到了。我一直在修改markdown文件,但是它们从来没有出现过--就像Laravel指错了地方一样。那是..。
我在上开发了一个升级的Laravel应用程序(即我从5.x开始,并随着时间的推移进行了升级),因此有两个潜在的问题。
首先,在ip/config/mail.php中:您可能需要实际创建标记路径。如果您在markdown之前发布了mailables,则整个markdown邮件设置将丢失。您可以从git代码库中获取它们,或者从此处获取它们以方便使用:
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],第二个潜在的问题(虽然在您的情况下不太可能)如果您之前发布了这些邮件文件,则HTML目录中的Laravel布局文件具有or操作符,这将导致阻塞。将这三个运算符更改为??。
根据您是从哪里开始的,这可能会对您有所帮助:)
发布于 2021-05-12 19:46:56
您收到的错误应该是在1.6.0版本的league/commonmark中添加的静默弃用错误。不幸的是,有一个bug导致它成为“用户通知”而不是弃用通知。将league/commonmark升级到1.6.2 where this was fixed可能会解决此问题。
如果您在升级后仍然收到错误(并确保PHP的opcache已被清除),则很可能Laravel或您代码中的其他内容正在捕获并报告此静默错误-这是一件好事,因为我们希望人们知道此功能已被弃用并将被删除,但它不应对您的日志造成垃圾邮件,因此请仔细检查Laravel或PHP中与错误日志记录、错误级别和日志记录相关的任何设置。
来源:我是league/commonmark的维护者。
发布于 2021-06-22 17:52:37
最终,我在Laravel Forge上将PHP版本设置为8,而不是在我用于部署的Laravel Envoyer上。希望这对有相同设置的人有所帮助!
https://stackoverflow.com/questions/67492622
复制相似问题