问题描述
我的Laravel版本是6.我的注册表格无法在实时服务器上运行,但对于本地主机来说却很好.当我点击注册按钮时,它将引发此异常.
My Laravel version is 6.My registration form is not working on live server but it's working good for localhost.When I hit register button, it throws this exception.
idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated
它在第114行上指向我的RegisterController.php.
It's pointing out to my RegisterController.php on line 114.
$this->validator($request->all())->validate();
和这行vendor/guzzlehttp/guzzle/src/Utils.php:35
and this line vendor/guzzlehttp/guzzle/src/Utils.php:35
? idn_to_ascii($uri->getHost(), $options)
RegisterController.php
RegisterController.php
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
$validator = Validator::make($data, [
'register_name' => ['required', 'string', 'max:8'],
'register_email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
'register_password' => ['required', 'string', 'min:8', 'confirmed'],
'user_type'=> ['required','in:user,company'],
'g-recaptcha-response' => ['required','captcha'],
]);
$validator->setAttributeNames([
'register_email' => 'email',
'register_password' => 'password',
]);
return $validator;
}
protected function create(array $data)
{
$user = User::create([
'name' => $data['register_name'],
'email' => $data['register_email'],
'password' => Hash::make($data['register_password']),
'user_type' =>$data['user_type'],
]);
$user->sendEmailVerificationNotification();
return $user;
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect()->intended($this->redirectPath());
}
}
推荐答案
我在服务器上安装了php7.3.而且我遇到了同样的错误.但是赫里,我解决了我的问题.
I have php7.3 on my server. and I was getting the same error.But hurrey, I fixed my problem.
当我们使用此命令在Laravel应用中安装guzzle时
When we install guzzle in our Laravel app using this command
composer require guzzlehttp/guzzle
它安装了比^ 7更低的guzzle版本.并且要解决此问题,我们需要最新的版本,在撰写本文时为^ 7.0.
It install lower version of guzzle than ^7.and to fix this problem, we need latest guzzle version, which is ^7.0 at the time of writing this post.
所以,有解决方案.
在服务器上编辑您的composer.json文件.并像这样更新您的枪口版本.
Edit your composer.json file on the server.and update your guzzle version like this.
"guzzlehttp/guzzle": "^7.0",
然后在服务器终端上运行命令.
then run the command on your server terminal.
composer update
就是这样.
如果您的PC上没有连接服务器ssh,则可以更新本地项目并重新上传整个供应商目录.
If you don't have server ssh connected to your pc, you can update your local project and re-upload the whole vendor directory.
这篇关于Laravel弃用错误:idn_to_ascii():INTL_IDNA_VARIANT_2003已弃用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!