Fatal error: Class 'NumberFormatter' not found

I've been using this exact same code for ages, and I have never had a single problem. Now all of a sudden it has stopped working.

I have read across the internet about this problem, and apparently you need PHP 5.3 or higher installed, and the PHP intl plugin installed. I have both of these, yet I am still receiving a Fatal error: Class 'NumberFormatter' not found error whenever I use the following function:

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

Also, here is a snippit from my php.ini file showing that I have the PHP intl plugin installed:

[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

I also have the extension=php_intl.dll in my php.ini, and it is also in my directory.

Why am I getting this error?

101731 次浏览

This seems to be some really weird problem, and I somehow fixed it by doing the following:

I upgraded my PHP in Wamp through this tutorial. I also updated my timezone in php.ini When I upgraded it didn't work, so I reverted back to my previous version of PHP, and voilà - it worked.

I have absolutely no idea how this solved the problem, however it worked for me.

You just need to enable this extension in php.ini by uncommenting this line:

extension=ext/php_intl.dll

For more details visit, Enable intl extension

Add your PHP directory in the Path environment variable. (C:\Program Files\wamp\bin\php\phpX.XXX.XXX for wamp)

It has worked for me!

If you are using Google App Engine, just add:

extension = "intl.so"

to your application's php.ini file.

https://cloud.google.com/appengine/docs/php/runtime

Change in php extensions did not work for me so I updated my php version from php 5.6.25 to 7.0.10 and it worked

All you need is:

apt-get install php7.0-intl

No need to change php.ini or do anything else. (Tested on PHP 7 on Ubuntu 16.04).

The most up-voted answer here has you uncommenting a .dll which will never solve anything unless you are on a Windows server!

I am using PHP 5.5 version and got the same error in Ubuntu Machine. I have installed php5-Intl package and restarted my apache server. This resolved the issue.

For PHP5

sudo apt-get install php5-intl

For PHP7

sudo apt-get install php7.0-intl

For Mac OS X, use the following command for PHP5.6

brew install php56-intl

For different OS, checkout this page : http://php.net/manual/en/intl.installation.php

To check successful installation, run the command php -m. This should show the intl package in the list.

If you are using XAMPP in Mac OS X, php-intl will sometimes create different problems. You can follow the debug steps mentioned here

If you are facing Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20121212/intl.so' error, follow the steps as mentioned here

outdated

On Max OS X with PHP installed with the Homebrew, we can:

We can check is module intl installed:

$ php -m

We can check module info:

$ brew info php72-intl

And install it with:

$ brew install php72-intl

i could just do the following and it will work perfect.

$numbers = 123456789;


$toThousands = number_format($numbers);

results will be: 123,456,789, the func "number_format" is already build in function.

I am running on ubuntu-16.04 and I am using php7, I had the same issue, It is because of the php_intl extension

the way I fixed it-

  • First check the extension is installed or not on your server, use below command to check it

    php -m | grep intl
    
  • If there's no results, you must need to install it

  • If not installed, let's install it

    sudo apt-get update
    sudo apt-get install php-intl
    
  • Finally you need to restart your web server after you install

Class 'NumberFormatter' not found error in simple PHP program

https://www.howtoinstall.co/en/ubuntu/xenial/php-intl

This worked for me (Ubuntu 18.10, PHP 7.2.15)

sudo apt-get install php-intl
service apache2 restart

This means that your intl package for PHP is not installed and/or not enabled.

Step 1

Make sure that you install php7.2-intl (or check that it is installed). In my case, I had PHP 7.2, but the version could change.

To install, I used

sudo apt install php7.2-intl

Step 2

After a successful installation, go to php.ini and enable that extension by removing the comment, as follows

extension=intl

Step 3

Retstart apache

sudo service apache2 restart

Actually if you're using xampp and php > 7.*

edit the line ;extension=intl to extension=intl, restart mysql service and you're good to go.

Solutions For ALL Windows and Mac.

Most of time this extension is not there, You just need to enable this extension in php.ini by uncommenting this line,

          extension=intl

if that line doesn't exists then add that line as like below in any place below first line,

         extension=intl
extension=ext/php_intl.dll

for better result add below as like as well because with above one is in some scenario not working with only below one,

         extension=php_intl.dll

Then it look like this,

         extension=ext/php_intl.dll
extension=php_intl.dll
extension=intl

After That Mostly Don't Forgot to restart your server in my case I am using xampp otherwise the changes not working properly.

On CentOS 8:

sudo dnf install php-intl

for additional, if someone come here and on Laravel using php artisan serve and facing this problem, and already uncomment

extension=intl

on php.ini, don't forget to restart your Laravel dev server.

I got the same error from inside docker image php:7.4-fpm, so I added the following lines to the Dockerfile

RUN apt-get install -y libicu-dev # required dependency


RUN docker-php-ext install intl

the same problem happened to me, I already configured the php.ini and enabled the intl extension, the error persisted and I solved it by adding PHP in the environment variables of the system PATH in Windows

(Ubuntu 20.04.3 LTS, PHP Version 7.4.30)

sudo apt-get install php7.4-intl
sudo service nginx restart

First of all, stop the XAMPP/Wamp and then kindly remove the starting semicolon ( ; ) from your xampp\php\php.ini the following code.

;extension=intl

And then restart your XAMPP/Wamp.

NOTE: For Windows, you can find the file in the C:\xampp\php\php.ini-Folder (Windows) or in the etc-Folder (within the xampp-Folder).

Very Important Note: "Close your Command Prompt And Restart Again" (It's very important because if you didn't restart your command prompt then changes will not be reflected.)