错误:Class 'NumberFormatter'没有找到


Fatal error: Class 'NumberFormatter' not found

我一直在使用相同的代码,从来没有遇到过任何问题。现在它突然停止工作了。

我在网上看到了这个问题,显然你需要安装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');
}

此外,这里是我的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,它也在我的目录。

为什么我得到这个错误?

所有你需要的是:

apt-get install php7.0-intl

不需要更改php.ini或做任何其他事情。(在Ubuntu 16.04和PHP 7上测试)。

这里投票最多的答案是你取消注释一个。dll,它永远不会解决任何问题,除非你是在Windows服务器上!

您只需要在php.ini中通过取消注释来启用此扩展:

extension=ext/php_intl.dll

有关更多详细信息,请访问,启用intl扩展

这适用于我(Ubuntu 18.10, PHP 7.2.15)

sudo apt-get install php-intl
service apache2 restart

我使用的是PHP 5.5版本,在Ubuntu Machine中得到了同样的错误。我已经安装了php5-Intl包并重新启动了apache服务器。问题解决

PHP5的

sudo apt-get install php5-intl

For php

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包。

如果在Mac OS X中使用XAMPP, php-intl有时会产生不同的问题。您可以遵循这里提到的调试步骤

如果你面对的是无法加载动态库'/usr/lib/php/extensions/no-debug-non-zts-20121212/intl。so'错误,按照这里提到的步骤

这意味着您的PHP intl包没有安装和/或没有启用。

步骤1

确保安装了php7.2-intl(或检查是否已安装)。在我的例子中,我使用的是PHP 7.2,但是版本可能会改变。

为了安装,我使用了
sudo apt install php7.2-intl
步骤2

安装成功后,转到php.ini并通过删除注释来启用该扩展,如下所示

extension=intl
步骤3

Retstart apache

sudo service apache2 restart

我正在运行ubuntu-16.04和我正在使用php7,我有同样的问题,这是因为php_intl扩展名

我修复它的方式-

  • 首先检查扩展是否安装在您的服务器上,使用下面的命令来检查它

    php -m | grep intl
    
  • 如果没有结果,你必须安装它

  • 如果没有安装,让我们安装它

    sudo apt-get update
    sudo apt-get install php-intl
    
  • 最后你需要重新启动你的web服务器后,你安装

类& # 39;numberformatter # 39;简单PHP程序

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

额外的,如果有人来这里和Laravel使用php artisan serve和面临这个问题,并且已经取消注释

extension=intl
在php.ini中,不要忘记重启你的Laravel开发服务器。

如果您使用的是Google App Engine,只需添加:

extension = "intl.so"

到应用程序的php.ini文件

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

实际上如果你使用的是xampp和php>7 . *

编辑;extension=intlextension=intl行,重新启动mysql服务,你就可以开始了。

Max OS X与PHP安装了Homebrew,我们可以:

我们可以检查intl模块是否安装:

$ php -m

我们可以检查模块信息:

$ brew info php72-intl

安装:

$ brew install php72-intl

我从docker image php:7.4-fpm内部得到了相同的错误,因此我将以下行添加到Dockerfile

RUN apt-get install -y libicu-dev # required dependency
RUN docker-php-ext install intl

在Path环境变量中添加PHP目录。(C: ' Program Files ' wamp ' bin ' php ' phpX.XXX。XXX表示wamp)

它对我有效!

(Ubuntu 20.04.3 LTS, PHP版本7.4.30)

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

这似乎是一些非常奇怪的问题,我通过做以下事情来解决它:

我通过本教程升级了我的PHP。我还在php.ini中更新了我的时区,当我升级时它不起作用,所以我恢复到我以前的PHP版本,并且volilo -它工作了。

我完全不知道这是如何解决问题的,但它对我来说很有效。

php扩展的变化不适合我,所以我把我的php版本从php 5.6.25更新到7.0.10,它工作

解决方案为所有Windows和Mac。

大多数时候这个扩展是不存在的,你只需要在php.ini中通过取消注释这一行来启用这个扩展,

          extension=intl

如果该行不存在,则在第一行下面的任何位置添加该行

         extension=intl
         extension=ext/php_intl.dll

为了得到更好的结果,也可以添加below as like,因为在某些情况下,使用above 1不能只使用below 1,

         extension=php_intl.dll

然后是这样的

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

之后,大多数情况下不要忘记重新启动服务器,在我的情况下,我使用xampp,否则更改不能正常工作。

在CentOS 8:

sudo dnf install php-intl

同样的问题发生在我身上,我已经配置了 PHP .ini并启用了intl扩展,错误持续存在,我通过在Windows

中系统路径的环境变量中添加PHP来解决它首先,停止XAMPP/Wamp,然后从您的 XAMPP ' PHP ' PHP .ini中删除开始分号(;)以下代码。

;extension=intl

然后重新启动XAMPP/Wamp。

注意:对于Windows,您可以在C:'xampp'php'php.ini-Folder (Windows)或etc-Folder(在xampp-Folder内)中找到该文件。

非常重要的提示:"关闭命令提示符并重新启动"(这是非常重要的,因为如果您没有重新启动命令提示符,那么更改将不会反映)

在使用heroku/php的情况下,您应该将此添加到composer.json:

    "require": {
        ...
        "ext-intl": "*"
    }

对于那些在这里使用docker并寻找解决方案的人,我只是将这行添加到我的Dockerfile:

RUN apk add --no-cache icu-dev && docker-php-ext-install intl

我正在从php:8.0.20RC1-fpm-alpine3.16获取图像

希望这对某人有帮助

我可以做下面的事情,它会完美地工作。

$numbers = 123456789;
$toThousands = number_format($numbers);

结果将是:123,456,789,函数"number_format"已经在函数中构建。