Ошибка IntlException Constructor failed

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Ошибка IntlException Constructor failed

Сообщение Kven »

Здравствуйте! Помогите решить проблему, выходит ошибка IntlException Constructor failed, ругается на строку:

Код: Выделить всё

<?= Yii::$app->formatter->asDatetime($model->receipt_application) ?>
Знаю что по запросу такой ошибки можно найти ответы через гугл, яндекс, но в деле применить советы (1, 2) у меня не получилось. Версия Intl на хостинге 58.2
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Больше информации надо давать в таком случае.
Где смотрели версию phpinfo/console
Какие локаль и таймзона
Раз применяли советы, то пробовали запускать new \IntlDateFormatter('ru', -1, -1, 'Asia/Barnaul'); с разными локалями/таймзонами, вылетает на всех или нет
Работают ли другие методы форматтера, которые используют intl
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Версию Intl на хостинге смотрел через ssh-консоль предоставляемую хостингом, посмотрел версию выполнив команду

Код: Выделить всё

php -r "echo INTL_ICU_VERSION . \"\n\";"
Следующую команду применить не удалось

Код: Выделить всё

new \IntlDateFormatter('ru', -1, -1, 'Europe/Moscow');
в консоли выдает ошибку

Код: Выделить всё

-bash: syntax error near unexpected token `(' 
В formatter выставлены следующие значения

Код: Выделить всё

'defaultTimeZone' => 'Europe/Moscow',
'timeZone' => 'GMT+3',
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Kven писал(а): 2019.10.08, 22:13 Версию Intl на хостинге смотрел через ssh-консоль предоставляемую хостингом, посмотрел версию выполнив команду
Создайте в папке web файл info.php

Код: Выделить всё

<?php 
    phpinfo();
и запустите его в браузере. Найдите там ICU и посмотрите версию.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Выдало следующую информацию
Изображение
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Теперь добавьте в этот файл строку

Код: Выделить всё

new \IntlDateFormatter('ru', -1, -1, 'Europe/Moscow');
и откройте его еще раз. Посмотрите будет ли ошибка.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Строку добавил, файл выглядит так

Код: Выделить всё

<?php 
phpinfo();
new \IntlDateFormatter('ru', -1, -1, 'Europe/Moscow');
При открытии файл info.php ошибок нет, при открытии других страниц ошибка не пропала
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Попробуйте вывести

Код: Выделить всё

Yii::$app->formatter->asDatetime(time());
вместо

Код: Выделить всё

<?= Yii::$app->formatter->asDatetime($model->receipt_application) ?>
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

yiiliveext писал(а): 2019.10.09, 10:29 Попробуйте вывести

Код: Выделить всё

Yii::$app->formatter->asDatetime(time());
Все равно ругается на IntlException
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

А так

Код: Выделить всё

Yii::$app->formatter->asDatetime(time(), 'php:d.m.Y H:i');
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Увы, без изменений
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

там нечему больше ломаться, внутри вызывается

Код: Выделить всё

$formatter = new IntlDateFormatter($this->locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, $timeZone, $this->calendar, $format);
Закомментируйте \Yii::$app->formatter->asDatetime(...) и добавьте за этим строчку

Код: Выделить всё

$formatter = new IntlDateFormatter(\Yii::$app->formatter->locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, \Yii::$app->formatter->timeZone, null, 'datetime');
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Вот и непонятно, сломалось все на ровном месте, вообще до появления ошибки я устанавливал компоненты от kartik - datecontrol, DateTimePicker. При этом на локальном ПК все работает нормально, а после выгрузки на хостинг вышла эта ошибка.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Kven писал(а): 2019.10.09, 11:53 Вот и непонятно, сломалось все на ровном месте, вообще до появления ошибки я устанавливал компоненты от kartik - datecontrol, DateTimePicker. При этом на локальном ПК все работает нормально, а после выгрузки на хостинг вышла эта ошибка.
Попробуйте вместо вызова asDatetime создать форматтер, как я описал в предыдущем посте.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Я написал следующим образом

Код: Выделить всё

<?php $formatter = new IntlDateFormatter(\Yii::$app->formatter->locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, \Yii::$app->formatter->timeZone, null, 'datetime'); ?>

<?= $formatter->asDatetime(time(), 'php:d.m.Y H:i'); ?>
без результатно. В web не может быть ошибок?

Код: Выделить всё

        'formatter' => [
            'class' => 'yii\i18n\Formatter',
            'defaultTimeZone' => 'Europe/Moscow',
            'timeZone' => 'GMT+3',
            'dateFormat' => 'php: d-F-Y',
            'datetimeFormat' => 'php: d M Y H:i',
            'decimalSeparator' => ',',
            'thousandSeparator' => ' ',
            'currencyCode' => 'RUB',
        ], 
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Код: Выделить всё

<?= $formatter->asDatetime(time(), 'php:d.m.Y H:i'); ?>
Эту строчку уберите. Сейчас задача создать Intl форматтер без ошибок.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Я закомментировал вывод даты на странице, оставил только следующую строку в файле вида

Код: Выделить всё

<?php $formatter = new IntlDateFormatter(\Yii::$app->formatter->locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, \Yii::$app->formatter->timeZone, null, 'datetime'); ?>
Страница открылась нормально
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

На такой код замените

Код: Выделить всё

$formatter = new \IntlDateFormatter(\Yii::$app->formatter->locale, \IntlDateFormatter::NONE, \IntlDateFormatter::NONE,  \Yii::$app->formatter->timeZone, null, 'd-m-Y H:m');
    $timestamp = new DateTime('@' . time(), new DateTimeZone('UTC'));
    echo $formatter->format($timestamp);
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Ошибка IntlException Constructor failed

Сообщение Kven »

Попробую чуть позже, так как сейчас уже не у компьютера. Подскажите, а на стороне хостинга может быть проблема с Intl? Так как сейчас выяснялось, что у меня ещё на одном сайте такая проблема вылезла, хотя я его уже несколько месяцев не трогал. Оба сайта используют версию php 7.1
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Ошибка IntlException Constructor failed

Сообщение yiiliveext »

Kven писал(а): 2019.10.09, 16:56 Попробую чуть позже, так как сейчас уже не у компьютера. Подскажите, а на стороне хостинга может быть проблема с Intl? Так как сейчас выяснялось, что у меня ещё на одном сайте такая проблема вылезла, хотя я его уже несколько месяцев не трогал. Оба сайта используют версию php 7.1
В самом Intl периодически вылазят какие-то баги, попросите хостера обновить на более свежую версию.
Ответить