Laravel не может увидеть существующий класс вендоров после обновления - PullRequest
0 голосов
/ 15 января 2020

Я больше не могу отправлять электронную почту из своего приложения Laravel после обновления до версии 6.10, 6.11. Я не изменил ни один код, а также недавно не потребовал и не удалил ничего нового из composer. Это может быть что-то, возможно, с новой сборкой Laravel, поскольку этот точный код работает и отправляет электронную почту на v6.7 и ниже.

Ошибка msg:

Класс '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): класс 'League \ CommonMark \ Environment' не найден (View: / 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) }}

Внутри вендора файла Уценка. 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 не может увидеть один из классов своих поставщиков.

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Оказывается, это результат значительного (слегка ломающегося) изменения, внесенного в сборку Laravel по состоянию на 6.10.

Из-за потенциальной уязвимости XSS похоже, что они изменили парсер root на League CommonMark. Это вызывает другие проблемы с существующими шаблонами, опубликованными в электронной почте, из-за того, что избыточный пробел по-разному анализируется в новом синтаксическом анализаторе CommonMark. Об ошибках сообщается здесь , здесь , здесь .

Моя конкретная проблема была чрезвычайно странной, но о ней сообщают в другом месте в дополнение к этим сообщил обратно Laravel. Это не было согласовано на всех моих серверах, но полная перестройка (бродяга) решила проблему.

Для остальных с ранее опубликованными шаблонами электронной почты, отображающими raw HTML, повторная публикация sh может решить проблему, если повезет, и в шаблоны не будет внесено никаких изменений.

0 голосов
/ 15 января 2020

Выполните следующее, чтобы восстановить список всех классов, которые должны быть включены в ваш проект.

php artisan clear-compiled -o
composer dump-autoload

Если все еще не работает, возможно, попробуйте переустановить пакет.

composer require league/commonmark

С какой версии Laravel вы обновились? Laravel 6,7?

...