致命错误:找不到类'NumberFormatter'

时间:2015-05-31 05:28:23

标签: php

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

我已经在互联网上阅读了有关此问题的信息,显然您需要安装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文件中的snippit,显示我已安装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,它也在我的目录中。

为什么我收到此错误?

15 个答案:

答案 0 :(得分:29)

你只需要通过取消注释这一行在php.ini中启用此扩展:extension = ext / php_intl.dll

有关详细信息,请访问Enable intl extension

答案 1 :(得分:17)

您只需要:

apt-get install php7.0-intl

无需更改php.ini或执行任何其他操作。 (在Ubuntu 16.04上的PHP 7上测试过。)

这里最高投票的答案是你取消注释.dll,除非你在Windows服务器上,否则永远不会解决任何问题!

答案 2 :(得分:10)

我正在使用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包。

如果您在Mac OS X中使用XAMPP,php-intl有时会产生不同的问题。您可以按照here

提到的调试步骤进行操作

如果您正面临无法加载动态库'/usr/lib/php/extensions/no-debug-non-zts-20121212/intl.so'错误,请按照上述步骤操作here

答案 3 :(得分:5)

这意味着您的intl PHP软件包未安装和/或未启用。

第1步

请确保您安装了php7.2-intl(或检查是否已安装)。就我而言,我有PHP 7.2,但是版本可以更改。

要安装,我用过

sudo apt install php7.2-intl

第2步

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

extension=intl

第3步

重新启动apache

sudo service apache2 restart

答案 4 :(得分:2)

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

extension = "intl.so"

到你的应用程序的php.ini文件。

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

答案 5 :(得分:2)

过时

在使用 Homebrew 安装PHP的 Max OS X 上,我们可以:

我们可以检查安装的模块$ php -m

$ brew info php72-intl

我们可以查看模块信息:

$ brew install php72-intl

安装以及:

stdin<0,1>: error FS0078: Unable to find the file 'open System' in any of C:\..\Desktop

答案 6 :(得分:2)

实际上,如果您使用的是xampp和php> 7。*

将行;extension=intl修改为extension=intl,重启mysql服务,一切顺利。

答案 7 :(得分:2)

另外,如果有人使用 php artisan serve 来到这里并使用 Laravel 并遇到此问题,并且已经取消注释

extension=intl

在 php.ini 上,不要忘记重启 Laravel 开发服务器。

答案 8 :(得分:1)

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

它对我有用!

答案 9 :(得分:1)

我在ubuntu-16.04上运行,我使用的是php7,我遇到了同样的问题, 这是因为 php_intl 扩展名

我修复它的方式 -

  • 首先检查服务器上是否安装了扩展程序,使用以下命令进行检查

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

  • 如果未安装,请安装

    sudo apt-get update
    sudo apt-get install php-intl
    
  • 最后,您需要在安装

  • 后重新启动Web服务器

Class 'NumberFormatter' not found error in simple PHP program

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

答案 10 :(得分:0)

这似乎是一些非常奇怪的问题,我通过以下方式解决了这个问题:

我通过this教程在Wamp中升级了我的PHP。我还在php.ini中更新了我的时区。当我升级时它不起作用,所以我又回到了我之前的PHP版本,并且瞧 - 它运作了。

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

答案 11 :(得分:0)

php扩展的更改对我不起作用所以我将我的php版本从php 5.6.25更新到7.0.10并且它有效

答案 12 :(得分:0)

我可以做以下事情,它会完美无缺。

$numbers = 123456789;

$toThousands = number_format($numbers);

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

答案 13 :(得分:0)

适用于所有Windows和Mac的解决方案。

大多数情况下,此扩展都不存在,您只需要在php.ini中通过取消注释此行来启用此扩展,

          extension=intl

如果该行不存在,则在第一行下方的任意位置添加该行,如下所示:

         extension=intl
         extension=ext/php_intl.dll

为了获得更好的结果,也请在下方添加以下内容,因为在某些情况下使用“ 1”以上仅适用于“ 1”以下,

         extension=php_intl.dll

然后看起来像这样

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

在那之后,大多数情况下,我并没有忘记重新启动服务器,所以我使用的是xampp,否则更改将无法正常工作。

答案 14 :(得分:0)

在CentOS 8上:

sudo dnf install php-intl