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()
中使用和显示;
如果我的 wamp
和 composer 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.dll
在 web 的 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 update
或 composer 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