Неустранимая ошибка: 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
, и он также находится в моем каталоге.
Почему я получаю эту ошибку?
Ответы
Ответ 1
Кажется, это какая-то действительно странная проблема, и я как-то ее исправил, выполнив следующее:
Я обновил свой PHP в Wamp через этот учебник. Я также обновил свой часовой пояс в php.ini
Когда я обновил его, это не сработало, поэтому я вернулся к своей предыдущей версии PHP, и voilà - это сработало.
Я абсолютно не знаю, как это решило проблему, однако это сработало для меня.
Ответ 2
Вам просто нужно включить это расширение в php.ini, раскомментируя эту строку: extension = ext/php_intl.dll
Подробнее см. Включить расширение внутреннего интерфейса
Ответ 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 ', выполните действия, описанные выше. здесь
Ответ 5
Если вы используете Google App Engine, просто добавьте:
extension = "intl.so"
в файл приложения php.ini.
https://cloud.google.com/appengine/docs/php/runtime
Ответ 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" уже встроен в функцию.