我一直在使用这个完全相同的代码,我从来没有遇到过任何问题。现在突然间它停止了工作。
我已经在互联网上阅读了有关此问题的信息,显然您需要安装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
,它也在我的目录中。
为什么我收到此错误?
答案 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文件。
答案 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
最后,您需要在安装
Class 'NumberFormatter' not found error in simple PHP program
答案 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