拉威尔5.5韩元';t使用PHP7.4呈现电子邮件
我试图在Laravel 5.5中呈现电子邮件,但无论我做什么,呈现时都会出现以下错误:拉威尔5.5韩元';t使用PHP7.4呈现电子邮件,php,laravel,Php,Laravel,我试图在Laravel 5.5中呈现电子邮件,但无论我做什么,呈现时都会出现以下错误: ErrorException(E_NOTICE)试图访问null类型值上的数组偏移量 发生在\vendor\egulias\email validator\EmailValidator\Parser\Parser.php中 我正在运行PHP7.4,我相信PHP7.3上不会发生错误 web.php: Route::get('scratch', function(){ $mail = new Test();
ErrorException(E_NOTICE)试图访问null类型值上的数组偏移量
发生在\vendor\egulias\email validator\EmailValidator\Parser\Parser.php中
我正在运行PHP7.4,我相信PHP7.3上不会发生错误
web.php:
Route::get('scratch', function(){
$mail = new Test();
return $mail->render();
});
Test.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class Test extends Mailable
{
use Queueable, SerializesModels;
public $subscription;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.test');
}
}
我认为这一定是Laravel5.5和PHP7.4的问题。我可以改变我的版本,但如果可能的话我想避免。升级Laravel不适用于此应用程序
编辑
在vendor\egulias\email validator\email validator\Parser\Parser.php中的这一行失败
protected function escaped()
{
$previous = $this->lexer->getPrevious();
if ($previous['type'] === EmailLexer::S_BACKSLASH // here
&&
$this->lexer->token['type'] !== EmailLexer::GENERIC
) {
return true;
}
return false;
}
问题是egulias/email validator
2.1.7存在PHP7.4问题。简单的composer更新
修复了它。问题是egulias/email validator
2.1.7有PHP7.4问题。简单的composer更新
修复了它。您可以通过stacktrace查找阵列访问发生的位置吗?这应该是一个错误,所以PHP7.4没有弄错,但在过去,它会返回null
(不是错误)@lagbox更新以显示失败位置。您尝试过调试这个问题吗?除非您通过代码可以调整从$this->lexer->getPrevious()返回的内容
除非有更新的版本,或者您使用此软件包并调整代码以检查null
上已经有错误报告,并且自v2.1.16以来有可用的修复程序-您使用的是哪一个?您可以通过stacktrace查找阵列访问发生的位置吗?这应该是一个错误,所以PHP7.4没有弄错,但在过去,它会返回null
(不是错误)@lagbox更新以显示失败位置。您尝试过调试这个问题吗?除非您通过代码可以调整从$this->lexer->getPrevious()返回的内容
除非有一个更新的版本,否则您将无法使用此软件包,或者您需要使用此软件包并调整该代码以检查null
上已经有一个错误报告,并且自v2.1.16版开始有一个修复程序-您使用的是哪一个?我刚刚使用php-7.3修复了它。因为这个项目在共享主机上,我没有访问服务器的权限,所以我用php-7.3修复了它。因为共享主机上的项目和我没有访问服务器的权限
protected function escaped()
{
$previous = $this->lexer->getPrevious();
if ($previous['type'] === EmailLexer::S_BACKSLASH // here
&&
$this->lexer->token['type'] !== EmailLexer::GENERIC
) {
return true;
}
return false;
}