您好我有一个laravel 5应用程序,它在当地环境中运行良好。但是在生产中,电子邮件没有被发送,而是我得到以下例外:
1/1 FatalErrorException in AstAnalyzer.php line 125:
Cannot instantiate interface PhpParser\Parser
Path to file: /vendor/jeremeamia/SuperClosure/src/Analyzer/AstAnalyzer.php line 125
我不明白,因为我现在在本地测试相同的功能并且正在工作。应用程序的每个其他路径都在工作,除了这个。
以下是功能:
public function update_password(Request $request, $id)
{
$this->validate($request, [
'new_password' => 'required|confirmed|min:6',
'new_password_confirmation' => 'required',
]);
$user = $this->user->get_user_by_id($id);
$password = $request->get('new_password');
$this->user->save_password($password, $id);
// Send an email informing user that we have updated his password.
Mail::queue('emails.password_update', ['user' => $user, 'password' => $password], function($message) use ($user){
$message->to($user->email, $user->name)->subject('Account Password Updated');
});
$target_location = 'users/'. $id. '/profile';
flash()->success('Password Updated Successfully');
return redirect($target_location);
}
答案 0 :(得分:0)
我终于解决了我的问题。我运行了composer update
,它安装了最新版本的nikic/php-parser
,同样安装了最新版本jeremeamia/superclosure
,但不知何故,正式用于nickic包的class Parser
现在是一个接口。 class Multiple
现在正在实施界面。因此,在jeremeamia包中的AstAnalyzer.php
中,没有进行更改,而是使用了use PhpParser\Parser as CodeParser;
,这是合乎逻辑的,因为除非完成某些绑定,否则无法实例化接口。所以作为一个快速修复,我使用了以前版本的nikic / php-parser。