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

我正在尝试使用 composer.json文件。但是,当我尝试在我的 path/project/中运行命令‘ composer install’时,我得到了一个错误:

enter image description here

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

enter image description here

无拷贝 icu*.dll也作品和显示在 phpinfo();

请让我知道,如果我有 intl安装在我的 wampcomposer install在我的电脑上,然后为什么我得到这个错误。真的,太烦人了。

以下是我的详细资料:

  1. 操作系统: windows 7(64)
  2. PHP: 5.3.13
  3. Apache: 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"
}
}
}

如果还需要其他细节,请告诉我。

如有任何反馈或帮助,我们将不胜感激。

279540 次浏览

PHP uses a different php.ini for command line php than for the web/apache php. So you see the intl extension in phpinfo() in the browser, but if you run php -m in the command line you might see that the list of extensions there does not include intl.

You can check using php -i on top of the output it should tell you where the ini file is loaded from. Make sure you enable the intl extension in that ini file and you should be good to go.

For php.ini 5.6 version (check version using php -v)

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

For php.ini 7.* version

;extension=intl
; remove semicolon
extension=intl

To enable intl extension follow the instructions below.

You need enable extension by uncommenting the following line extension=php_intl.dll in the C:\xampp\php\php.ini file. Once you uncomment the extension=php_intl.dll, then you must restart apache server using XAMPP control panel.

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

(Note: php.ini file mostly in the following directory C:\xampp\php)

Restart xampp

This is bit old question but I had faced same problem on linux base server while installing magento 2.

When I am firing composer update or composer install command from my magento root dir. Its was firing below error.

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.
...

Then, I searched for the available intl & intl extensions, using below commands.

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


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

And it fixed the issue.

I encountered this using it in Mac, resolved it by using --ignore-platform-reqs option.

composer install --ignore-platform-reqs

After installing with this method, if the package that defines the requirement attempts to use any functions from the specified PHP extension, it will fail irrevocably.

In linux (Debian Jessie for example):

apt-get install php7.0-intl

will make the job to you due will create a simbolic link to it.

If You have got this error while running composer install command, don't worry. Steps to be followed and requirements:

  • Step1: Go to server folder such as xampp(or) wampp etc.
  • Step2: open php folder inside that and go to ext folder.
  • Step3: If you find a file named as php_intl.dll no problem.

Just go to php.ini file and uncomment the line

From:

;extension=php_intl.dll

To:

extension=php_intl.dll
  • Step4: restart xampp, thats it

Note: If you don't find any of the file named as php_intl.dll, then you need to upgrade the PHP version.

(with xampp server)open php.ini in ".\xampp\php"

change ;extension=intl to extension=intl

just remove them

"ext-intl" : "*"

from your composer.json file.

Because sometimes for some helper functions, the IDE complains that the extension is missing from the composer.json file. Immediately press Alt+Enter to add it to the composer. But that doesn't mean that composer will count them in. The composer will complain next time while doing some operations. So that, we should not blindly type Alt+Enter rather than installing them manually in composer by doing composer install <package-name>.

As I think you have entered it manually, you should remove it, then install it in proper procedure composer install <package-name>

Or else you can run composer update to count that added dependencies in.

In latest XAMPP version; You need to find only intl(Line no 912)in php.ini file. Change ;extension=intl To extension=intl

In my case, I am using ubuntu, run this command, it will be solved if your system is also ubuntu.

sudo apt-get install php-intl

I have faced the same issue on my server. And it is mainly happened due to miss-match of php version between server version and your system version. I am using Nginx and checked on all my project configuration files, it uses php8.0 but on my terminal it shows php.8.1. Actually my application needs php8.0. The following steps resolved my issue.

To see all my running php versions

sudo update-alternatives --config php

It shows the following page php all versions page

Selecting php8.0 for my application. Run the command to see Nginx scripts are ok

sudo nginx -t

Then reload the Nginx

sudo systemctl reload nginx

Finally go to your project directory and update or install your composer

composer update

It has been resolved my issue, I expect same will resolve yours.