Composer:您的系统中缺少请求的 PHP 扩展 ext-intl *

Posted

技术标签:

【中文标题】Composer:您的系统中缺少请求的 PHP 扩展 ext-intl *【英文标题】:Composer: The requested PHP extension ext-intl * is missing from your system 【发布时间】:2014-04-15 10:29:26 【问题描述】:

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

我已经为“extension=php_intl.dll”配置了我的wamp,并从“D:\wamp\bin\php\php5.3.13”复制了“D:\wamp\bin\apache\apache2.2.22\bin”中的所有icu*.dll,它显示在phpinfo()中:

没有副本icu*.dll 也可以在phpinfo() 中使用和显示;

如果我的 wampcomposer install 上安装了 intl,请告诉我,为什么我收到这个错误。真的,太烦人了。

这是我的详细信息:

    操作系统:Windows 7 (64) PHP:5.3.13 Apache:2.2.22 Composer:由可执行文件安装 Pear:已安装(最新) 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"
        
    

如果需要任何其他详细信息,请告诉我..

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

【问题讨论】:

【参考方案1】:

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

composer install --ignore-platform-reqs

【讨论】:

实际上比其他解决方案更适合我。可能需要补充一点,--ignore-platform-reqs 对于喜欢尝试它的人来说是一个作曲家选项:) 在 Lubuntu 上完成 - 没有比这更合法的了 有人可以就使用此标志的任何缺点提供一些意见吗?【参考方案2】:

PHP 对命令行 php 与 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

【讨论】:

非常感谢 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 路径。西亚!!再次感谢分配! 非常感谢。您节省了几个小时。 php --ini 将显示 CLI 配置文件名。 在类似 Debian/Ubuntu 的系统上,我们可以使用以下命令安装 mbstring 扩展:sudo apt-get install php-mbstring 在 Ubuntu 16.04 上运行 LAMP 堆栈:Un-comment(即删除后缀 ; 符号)extension=php_intl.dllweb 的 php.ini 中/apache php && 离开 php-cli 的 php.ini 原样 (因为对 php-cli 做同样的事情使 php 通过这个终端错误:PHP 警告:PHP 启动:无法加载动态库...) ||在此之后一切正常!【参考方案3】:

在 linux 中(例如 Debian Jessie):

apt-get install php7.0-intl

将为您完成工作,因为将创建一个指向它的符号链接。

【讨论】:

谢谢,确保先安装了模块,然后按照这个答案说的做:***.com/a/22345369/4628115 需要注意的是,你要安装的PHP版本需要调整。例如,如果你想为 PHP 7.3 安装它,你会这样做: sudo apt-get install php7.3-intl【参考方案4】:

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

您需要通过取消注释 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

【讨论】:

【参考方案5】:

我通过在 ubuntu 中添加 --ignore-platform-reqs 命令和 composer install 解决了这个问题。

composer install --ignore-platform-reqs

【讨论】:

你没有“解决”这个问题,你忽略了这个问题。【参考方案6】:

删除它们

"ext-intl" : "*"

来自您的 composer.json 文件。

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

我认为你是手动输入的,你应该删除它,然后按照正确的程序安装它composer install <package-name>

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

【讨论】:

感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。【参考方案7】:

这是一个有点老的问题,但我在安装 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

它解决了这个问题。

【讨论】:

【参考方案8】:

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

步骤1:转到服务器文件夹,例如xampp(或)wampp等。 第二步:打开里面的php文件夹,进入ext文件夹。 Step3:如果你找到一个名为php_intl.dll的文件没问题。

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

发件人:

;extension=php_intl.dll

收件人:

extension=php_intl.dll
Step4:重启xampp,就这样

注意:如果您没有找到任何名为 php_intl.dll,则需要升级PHP版本。

【讨论】:

我在 Windows 上安装了 XAMPP v3.2.4。我在“ext 文件夹”中有 php_intl.dll。但是,在 php.ini 文件中,有 ';extension=intl' 行,我已取消注释并按照您的说明进行操作。它给了我系统错误(您的计算机中缺少 MSVCP140.dll)。【参考方案9】:

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

;extension=intl 更改为 extension=intl

【讨论】:

【参考方案10】:

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

;extension=php_intl.dll ;删除分号并保持这样 扩展=php_intl.dll

对于 php.ini 7.* 版本

;扩展名=intl ;删除分号并保持这样 扩展=国际

注意 - 之后确保在本地计算机上重新启动 Xampp、Wamp 服务器。

【讨论】:

【参考方案11】:

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

;extension=php_sockets.dll

(去掉分号以取消注释)

对我来说,不需要重新启动 XAMPP(在你的情况下是 WAMP)。但是如果不起作用,请重新启动它。

【讨论】:

【参考方案12】:

在最新的 XAMPP 版本中; 您只需要在 php.ini 文件中找到 intl(第 912 行)。 改变 ;扩展=国际 到 扩展=国际

【讨论】:

以上是关于Composer:您的系统中缺少请求的 PHP 扩展 ext-intl *的主要内容,如果未能解决你的问题,请参考以下文章

laravel 作曲家更新:您的系统中缺少请求的 PHP 扩展 dom

Composer 错误:“系统中缺少 PHP 扩展文件信息”

Composer 错误:“系统中缺少 PHP 扩展文件信息”

如何解决作曲家问题 - laravel/framework [..] 需要 ext-mcrypt * -> 您的系统中缺少请求的 PHP 扩展 mcrypt

- mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb

Laravel Composer 更新失败 Ubuntu