簡體   English   中英

Laravel 更新后看不到現有的供應商類

[英]Laravel can't see existing vendor class after update

更新到 v6.10、6.11 后,我無法再從我的 Laravel 應用程序發送電子郵件。 我沒有更改任何代碼,最近也沒有要求或刪除 Composer 中的任何新內容。 這似乎是新版本 Laravel 的潛在問題,因為這個確切的代碼在 v6.7 及更低版本上運行並發送電子郵件。

錯誤消息:

找不到類“League\\CommonMark\\Environment”(視圖:/home/ww/app/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/footer.blade.php)

{"exception":"[object] (Facade\\Ignition\\Exceptions\\ViewException(code: 0): Class 'League\\CommonMark\\Environment' not found (查看:/home/ww/app/vendor/laravel/framework/src /Illuminate/Mail/resources/views/html/footer.blade.php) 在 /home/videocyp/app/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php:103)

我發布的供應商文件中的頁腳中導致問題的行:

{{ Illuminate\Mail\Markdown::parse($slot) }}

供應商文件Markdown.php 中

use League\CommonMark\Environment;

 class Markdown
 { 
    public static function parse($text)
    {
       $environment = Environment::createCommonMarkEnvironment();
       // etc...
 }

查看League\\CommonMark\\Environment ,我找到了類(就像我的 IDE 一樣):

final class Environment implements EnvironmentInterface, ConfigurableEnvironmentInterface { }

我在這里無法理解為什么 Laravel 無法看到其供應商類之一。

任何人都可以提供幫助?

運行以下命令以重新生成需要包含在項目中的所有類的列表。

php artisan clear-compiled -o
composer dump-autoload

如果仍然無法正常工作,請嘗試重新安裝軟件包。

composer require league/commonmark

你是從哪個版本的 Laravel 升級的? Laravel 6.7?

事實證明,這是從 v6.10 開始對 Laravel 構建進行重大(略微破壞)更改的結果。

由於潛在的 XSS 漏洞,看起來他們將根解析器更改為 League CommonMark。 由於在新的 CommonMark 解析器中對多余的空白進行了不同的解析,這會導致現有電子郵件發布模板出現其他問題。 錯誤報告在這里這里這里

我的特殊問題非常奇怪,但除了報告給 Laravel 的問題外,其他地方也報告了它。 它在我的服務器上不一致,但是完全重建(流浪者)解決了這個問題。

對於之前發布的電子郵件模板顯示原始 HTML 的其他人,如果幸運的話,重新發布可能會解決問題,並且模板沒有進行任何更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM