Laravel 更新后无法看到现有供应商 class
Laravel can't see existing vendor class after update
更新到 v6.10、6.11 后,我无法再从我的 Laravel 应用程序发送电子邮件。我没有更改任何代码,最近也没有要求或删除 composer 的任何新内容。这似乎与 Laravel 的新版本有关,因为这个确切的代码在 v6.7 及更低版本上可以正常运行并发送电子邮件。
错误 消息:
Class 'League\CommonMark\Environment' not found (View: /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 (View:
/home/ww/app/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/footer.blade.php)
at
/home/videocyp/app/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php:103)
我的 页脚 来自 我发布的 供应商文件中导致问题的行:
{{ Illuminate\Mail\Markdown::parse($slot) }}
在 vendor 文件中 Markdown.php
use League\CommonMark\Environment;
class Markdown
{
public static function parse($text)
{
$environment = Environment::createCommonMarkEnvironment();
// etc...
}
查看 League\CommonMark\Environment
,我发现 class(我的 IDE 也是):
final class Environment implements EnvironmentInterface, ConfigurableEnvironmentInterface { }
我无法理解为什么 Laravel 无法看到其供应商之一 classes。
有人能帮忙吗?
运行 以下内容可重新生成需要包含在项目中的所有 类 的列表。
php artisan clear-compiled -o
composer dump-autoload
如果仍然无法正常工作,也许可以尝试重新安装软件包。
composer require league/commonmark
您从 Laravel 的哪个版本升级? Laravel 6.7?
事实证明,这是对 v6.10 的 Laravel 版本进行重大(略有破坏)更改的结果。
由于潜在的 XSS 漏洞,他们似乎将根解析器更改为 League CommonMark。由于在新的 CommonMark 解析器中以不同方式解析多余的白色 space,这会导致现有电子邮件发布模板出现其他问题。已报告错误 here, here, here。
我的特殊问题非常奇怪,但除了反馈给 Laravel 的那些之外,其他地方也有人报告过它。它在我的服务器中不一致,但完全重建(流浪者)解决了这个问题。
对于之前发布的显示原始电子邮件模板的其他人 HTML,如果幸运且未对模板进行任何更改,重新发布可能会解决问题。
更新到 v6.10、6.11 后,我无法再从我的 Laravel 应用程序发送电子邮件。我没有更改任何代码,最近也没有要求或删除 composer 的任何新内容。这似乎与 Laravel 的新版本有关,因为这个确切的代码在 v6.7 及更低版本上可以正常运行并发送电子邮件。
错误 消息:
Class 'League\CommonMark\Environment' not found (View: /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 (View: /home/ww/app/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/footer.blade.php) at /home/videocyp/app/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php:103)
我的 页脚 来自 我发布的 供应商文件中导致问题的行:
{{ Illuminate\Mail\Markdown::parse($slot) }}
在 vendor 文件中 Markdown.php
use League\CommonMark\Environment;
class Markdown
{
public static function parse($text)
{
$environment = Environment::createCommonMarkEnvironment();
// etc...
}
查看 League\CommonMark\Environment
,我发现 class(我的 IDE 也是):
final class Environment implements EnvironmentInterface, ConfigurableEnvironmentInterface { }
我无法理解为什么 Laravel 无法看到其供应商之一 classes。
有人能帮忙吗?
运行 以下内容可重新生成需要包含在项目中的所有 类 的列表。
php artisan clear-compiled -o
composer dump-autoload
如果仍然无法正常工作,也许可以尝试重新安装软件包。
composer require league/commonmark
您从 Laravel 的哪个版本升级? Laravel 6.7?
事实证明,这是对 v6.10 的 Laravel 版本进行重大(略有破坏)更改的结果。
由于潜在的 XSS 漏洞,他们似乎将根解析器更改为 League CommonMark。由于在新的 CommonMark 解析器中以不同方式解析多余的白色 space,这会导致现有电子邮件发布模板出现其他问题。已报告错误 here, here, here。
我的特殊问题非常奇怪,但除了反馈给 Laravel 的那些之外,其他地方也有人报告过它。它在我的服务器中不一致,但完全重建(流浪者)解决了这个问题。
对于之前发布的显示原始电子邮件模板的其他人 HTML,如果幸运且未对模板进行任何更改,重新发布可能会解决问题。