Laravel Устаревшая ошибка: idn_to_ascii (): INTL_IDNA_VARIANT_2003 устарела - PullRequest
2 голосов
/ 23 апреля 2020

Моя Laravel версия 6. Моя форма регистрации не работает на реальном сервере, но работает хорошо для localhost. Когда я нажимаю кнопку регистрации, она выдает это исключение.

idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated

Это указывает на мой RegisterController. php на строке 114.

$this->validator($request->all())->validate();

и на эту строку vendor / guzzlehttp / guzzle / src / Utils. php: 35

? idn_to_ascii($uri->getHost(), $options)

Пожалуйста, помогите мне исправить это.

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());
    }

}

Ответы [ 3 ]

1 голос
/ 01 мая 2020

У меня есть php7 .3 на моем сервере. и я получаю ту же ошибку. Но ура, я исправил свою проблему.

Когда мы устанавливаем guzzle в наше приложение Laravel, используя эту команду

composer require guzzlehttp/guzzle

Он устанавливает более низкую версию guzzle, чем ^ 7. и чтобы решить эту проблему, нам нужна последняя версия жадности, которая на момент написания этой статьи была ^ 7.0.

Итак, есть решение.

Отредактируйте composer. json файл на сервере. и обновите свою версию жадности следующим образом.

"guzzlehttp/guzzle": "^7.0",

, затем запустите команду на своем серверном терминале.

composer update

Вот и все.

Если у вас нет На сервере sh, подключенном к вашему p c, вы можете обновить локальный проект и повторно загрузить весь каталог поставщиков.

0 голосов
/ 04 мая 2020

решено

Я столкнулся с той же проблемой: на локальном windows p c php 7.2.30, жрет 6.5.3 работает нормально. но те же версии на сервере выдают эту ошибку с точными номерами строк. понижение уровня жадности 6.5.2 решило проблему на сервере. Я подозреваю, что поведение обеих сторон может отличаться.

intl на локальном компьютере:

version | 1.1.0
-- | --
ICU version | 64.2
ICU Data version | 64.2
ICU TZData version | 2019a
ICU Unicode version | 12.1

intl на сервере:

version | 1.1.0
-- | --
ICU version | 4.2.1

0 голосов
/ 24 апреля 2020

Причина вашей проблемы проста:

Несоответствие между PHP версиями, на вашей локальной машине разработчика у вас, вероятно, версия PHP, отличная от версии на сервере!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...