Подтвердить что ты не робот

Неустранимая ошибка: Class 'NumberFormatter' не найден

Я использую этот точно такой же код целую вечность, и у меня никогда не было ни одной проблемы. Теперь он внезапно прекратил работать.

Я прочитал через Интернет об этой проблеме, и, видимо, вам нужно установить PHP 5.3 or higher и установить плагин PHP intl. У меня есть оба из них, но я все еще получаю ошибку Fatal error: Class 'NumberFormatter' not found всякий раз, когда я использую следующую функцию:

function format_item($value)
{
       $format = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
       return $format->formatCurrency($value, 'AUD');
}

Кроме того, вот фрагмент файла my php.ini, показывающий, что у меня установлен плагин PHP intl:

[intl]
intl.default_locale = fr_FR
; This directive allows you to produce PHP errors when some error
; happens within intl functions. The value is the level of the error produced.
; Default is 0, which does not produce any errors.
intl.error_level = E_WARNING

У меня также есть extension=php_intl.dll в моем php.ini, и он также находится в моем каталоге.

Почему я получаю эту ошибку?

4b9b3361

Ответ 1

Кажется, это какая-то действительно странная проблема, и я как-то ее исправил, выполнив следующее:

Я обновил свой PHP в Wamp через этот учебник. Я также обновил свой часовой пояс в php.ini Когда я обновил его, это не сработало, поэтому я вернулся к своей предыдущей версии PHP, и voilà - это сработало.

Я абсолютно не знаю, как это решило проблему, однако это сработало для меня.

Ответ 3

Все, что вам нужно, это:

apt-get install php7.0-intl

Не нужно изменять php.ini или делать что-либо еще. (Протестировано на PHP 7 на Ubuntu 16.04).

Самый проголосовавший ответ здесь - вы раскомментируете .dll, который никогда ничего не решит, если вы не на сервере Windows!

Ответ 4

Я использую версию PHP 5.5 и получил ту же ошибку в Ubuntu Machine. Я установил пакет php5-Intl и перезапустил сервер Apache.. Это решило проблему.

Для PHP5

sudo apt-get install php5-intl

Для PHP7

sudo apt-get install php7.0-intl

Для Mac OS X используйте следующую команду для PHP5.6

brew install php56-intl

Для разных ОС выйдите на эту страницу: http://php.net/manual/en/intl.installation.php

Чтобы проверить успешную установку, запустите команду php -m. Это должно показать пакет intl в списке.

Если вы используете XAMPP в Mac OS X, php-intl иногда создает различные проблемы. Вы можете следить за шагами отладки, указанными здесь

Если вы столкнулись с проблемой Невозможно загрузить динамическую библиотеку /usr/lib/php/extensions/no -debug-non-zts-20121212/intl.so ', выполните действия, описанные выше. здесь

Ответ 6

В Max OS X с PHP, установленным с Homebrew, мы можем:

Мы можем проверить установленный модуль intl:

$ php -m

Мы можем проверить информацию о модуле:

$ brew info php72-intl

И установите его с помощью:

$ brew install php72-intl

Ответ 7

Добавьте свой каталог PHP в переменную окружения Path. (C:\Program Files\wamp\bin\php\phpX.XXX.XXX для wamp)

Это сработало для меня!

Ответ 8

Изменение в php-расширениях не сработало для меня, поэтому я обновил свою версию php с php 5.6.25 до 7.0.10 и работал

Ответ 9

Я мог бы просто сделать следующее, и он будет работать идеально.

$numbers = 123456789;

$toThousands = number_format($numbers);

результаты будут: 123 456 789, func "number_format" уже встроен в функцию.