作曲家:您的系统缺少所请求的PHP扩展名ext-intl *


80

我正在尝试使用composer.json文件。但是,当我尝试composer install在自己的命令中运行命令“ ”path/project/时,出现错误:

在此处输入图片说明

我已经wamp为' extension=php_intl.dll'配置了我的代码,并从' 'icu*.dll中将所有内容复制D:\wamp\bin\apache\apache2.2.22\bin到' D:\wamp\bin\php\php5.3.13'中,并且显示在phpinfo()

在此处输入图片说明

没有复制的icu*.dll作品也可以展示出来phpinfo();

请让我知道,如果我有intl安装在我wampcomposer install我的电脑为什么我收到此错误。真的,太烦人了。

这是我的详细信息:

  1. 操作系统:Windows 7(64)
  2. PHP:5.3.13
  3. 阿帕奇:2.2.22
  4. 作曲家:由可执行文件安装
  5. 梨子:已安装(最新)
  6. PHPUnit:已安装(最新)

composer.json的如下:

{
    "name" : "sebastian/money",
    "description" : "Value Object that represents a monetary value (using a currency's smallest unit)",
    "keywords" : ["money"],
    "homepage" : "http://www.github.com/sebastianbergmann/money",
    "license" : "BSD-3-Clause",
    "authors" : [{
            "name" : "Sebastian Bergmann",
            "email" : "sebastian@phpunit.de"
        }
    ],
    "require" : {
        "php" : ">=5.3.3",
        "ext-intl" : "*"
    },
    "require-dev" : {
        "phpunit/phpunit" : "~4.0"
    },
    "autoload" : {
        "classmap" : [
            "src/"
        ]
    },
    "extra" : {
        "branch-alias" : {
            "dev-master" : "1.3.x-dev"
        }
    }
}

让我知道是否需要其他详细信息。

任何反馈/帮助将不胜感激。

Answers:


90

PHP对命令行php使用的php.ini与对web / apache php使用的php.ini不同。因此,您在浏览器中的phpinfo()中看到了intl扩展名,但是如果php -m在命令行中运行,则可能会看到那里的扩展名列表中不包含intl。

您可以检查php -i输出的顶部使用,它应该告诉您ini文件从何处加载。确保在该ini文件中启用了intl扩展名,并且一切顺利。

对于php.ini 5.6版本(使用php -v检查版本)

;extension=php_intl.dll 
; remove semicolon
extension=php_intl.dll

对于php.ini 7. *版本

;extension=intl
; remove semicolon
extension=intl

7
非常感谢Seldaek,您是对的,CLI有不同的PHP.ini。它的'D:\ wamp \ bin \ php \ php5.3.13 \ php.ini',对于WEB,其'D:\ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini。因此,我也必须编辑CLI php.ini。现在可以正常工作了。如果有人想知道使用什么php.ini CLI,则只需在CMD上运行php -i或更好的方法$ php -i> php.txt。它将输出保存在php.txt文件中,然后您可以通过“已加载的配置文件=>”来了解php.ini路径。iya!再一次感谢分配!
Neeraj Singh 2014年

2
非常感谢。您节省了几个小时。
Bhavik Shah

5
php --ini将显示CLI配置文件名。
Mukesh Chapagain

在类似Debian / Ubuntu的系统上,我们可以mbstring使用以下命令安装扩展:sudo apt-get install php-mbstring
Sasha MaximAL '16

1
在我在Ubuntu 16.04的情况下运行LAMP堆栈:取消注释(即去掉后缀;符号)extension=php_intl.dll在php.ini中网/ apache的PHP &&留下的php.ini中的php-CLI,因为它是(因为做同样的for php-cli通过以下错误使php通过终端错误:PHP警告:PHP启动:无法加载动态库...) || 在此之后,一切都运转良好!
Vinay Vissh

100

我在Mac中使用它时遇到了此问题,使用--ignore-platform-reqs选项解决了它。

composer install --ignore-platform-reqs

实际上对我来说比其他解决方案更好。对于那些也想尝试一下的人,可能不得不添加--ignore-platform-reqs是一个作曲家选项:)
David Pinezich

做出这样的Lubuntu -没有什么比这更合法的
丹尼尔安瓦瑞

33

在linux中(例如Debian Jessie):

apt-get install php7.0-intl

将为您完成工作,并为此创建一个符号链接。


谢谢,请确保先安装了模块,然后执行此答案所说的内容:stackoverflow.com/a/22345369/4628115
CybeX

应该注意的是,要对其进行安装的PHP版本应该进行调整。例如,如果您想为PHP 7.3安装它,可以这样做:sudo apt-get install php7.3-intl
Uriahs Victor

16

要启用国际扩展,请按照以下说明进行操作。

您需要通过在C:\ xampp \ php \ php.ini文件中取消注释以下行extension = php_intl.dll来启用扩展。一旦取消注释extension = php_intl.dll,则必须使用XAMPP控制面板重新启动apache服务器。

//about line 998
;extension=php_intl.dll 
change as
extension=php_intl.dll

(注意:php.ini文件主要位于以下目录C:\ xampp \ php中)

重新启动xampp


4

删除它们

"ext-intl" : "*"

从您的composer.json文件中。

因为有时对于某些辅助功能,IDE抱怨composer.json文件中缺少扩展名。立即按Alt + Enter将其添加到作曲家。但这并不意味着作曲家会把它们算在内。作曲家下次进行某些操作时会抱怨。因此,我们不应该盲目地输入Alt + Enter,而应该这样做是在composer中手动安装它们composer install <package-name>

由于我认为您是手动输入的,因此应将其删除,然后按照正确的步骤进行安装 composer install <package-name>

否则,您可以运行composer update以计算添加的依赖项。


感谢您提供此代码段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的解决方案,正确的解释将大大提高其长期价值,对于其他存在类似问题的读者来说,这样做将更为有用。请编辑您的答案以添加一些解释,包括您所做的假设。
Dwhitz

1

这是一个有点老的问题,但是在安装magento 2时,我在linux基本服务器上也遇到了同样的问题。

当我从magento根目录射击composer updatecomposer install命令时。它的发射低于错误。

Problem 1
    - The requested PHP extension ext-intl * is missing from your system. Install or enable PHP's intl extension.
  Problem 2
    - The requested PHP extension ext-mbstring * is missing from your system. Install or enable PHP's mbstring extension.
  Problem 3
    - Installation request for pelago/emogrifier 0.1.1 -> satisfiable by pelago/emogrifier[v0.1.1].
    - pelago/emogrifier v0.1.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
   ...

然后,我使用以下命令搜索了可用的intl&intl扩展名。

yum list php*intl
yum install php-intl.x86_64  

yum list php*mbstring
yum install php-mbstring.x86_64

它解决了这个问题。


1

如果在运行composer install命令时遇到此错误,请不要担心。要遵循的步骤和要求:

  • 步骤1:转到服务器文件夹,例如xampp(或)wampp等。
  • 步骤2:在其中打开php文件夹,然后转到ext文件夹。
  • 步骤3:如果找到名为php_intl.dll的文件,没有问题。

只需转到php.ini文件并取消注释该行

从:

;extension=php_intl.dll

至:

extension=php_intl.dll
  • 第四步:重启xampp,就这样

注意:如果找不到名为php_intl.dll的任何文件 ,则需要升级PHP版本。


我在Windows上具有XAMPP v3.2.4。我在“ ext folder”中有php_intl.dll。但是,在php.ini文件中,有'; extension = intl'行,我已取消注释并按照您的指示进行操作。它给我系统错误(您的计算机中缺少MSVCP140.dll)。
Aniket先生20年

1

(使用xampp服务器)在“ 。\ xampp \ php ”中打开php.ini

; extension = intl更改为extension = intl


0

只需取消注释此行(要找到它,只需在编辑器中搜索此行)即可:

;extension=php_sockets.dll

(将分号取消注释)

对我而言,无需重新启动XAMPP(在您的情况下为WAMP)。但是,如果不起作用,请重新启动它。


0

对于php.ini 5.6版本(使用php -v检查版本)

; extension = php_intl.dll; 删除分号,并保持此扩展名= php_intl.dll

对于php.ini 7. *版本

; extension = intl; 删除分号,并保持此扩展名= intl

注意-确保在本地计算机中重新启动Xampp,Wamp Server之后。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.