ChatGPT解决这个技术问题 Extra ChatGPT

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

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

https://i.stack.imgur.com/RyHbc.jpg

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

https://i.stack.imgur.com/H0QPs.jpg

没有副本 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"
        }
    }
}

让我知道是否需要任何其他详细信息..

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


l
leymannx

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

composer install --ignore-platform-reqs

实际上比其他解决方案更适合我。可能需要补充一点,--ignore-platform-reqs 对于喜欢尝试它的人来说是一个作曲家选项:)
在 Lubuntu 上完成 - 没有比这更合法的了
有人可以就使用此标志的任何缺点提供一些意见吗?
@S.Dre 正如 Healyhatman 在下面解释的 2 个答案,这显然忽略了问题,我发现了这个 old ressource,它指出此标志禁用了已安装的 PHP 系统和可用扩展之间的某种检查,因此可以有点忽略了这个问题,但它是微妙的,这个标志有一些用例有用,博客文章说明了这些用例。
我想@AkechiShiro,任何带有忽略的标志都应该用一粒盐来处理。
m
miken32

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
在我的情况下,在运行 LAMP 堆栈的 Ubuntu 16.04 上: Un-comment(即删除后缀 ; 符号)extension=php_intl.dllweb/apache php 的 php.ini 中 & ;& 保留 php-cli 的 php.ini 原样 (因为对 php-cli 执行相同操作会使 php 在终端中通过此错误:PHP 警告:PHP启动:无法加载动态库...) ||在此之后一切都运行良好!
A
Anibal Developer

在 linux 中(例如 Debian Jessie):

apt-get install php7.0-intl

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


谢谢,请确保先安装模块,然后按照此答案执行:stackoverflow.com/a/22345369/4628115
应该注意的是,您要安装它的 PHP 版本应该进行调整。例如,如果你想为 PHP 7.3 安装它,你会这样做: sudo apt-get install php7.3-intl
m
matinict

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

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


M
Md. Jamil Ahsan

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

composer install --ignore-platform-reqs

你没有“解决”问题,你忽略了问题。
S
S K R

只需删除它们

"ext-intl" : "*"

从您的 composer.json 文件中。

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

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

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


感谢您提供此代码片段,它可能会提供一些有限的即时帮助。 proper explanation 将通过说明为什么这是解决问题的好方法,将大大提高其长期价值,并使其对有其他类似问题的未来读者更有用。请edit您的回答以添加一些解释,包括您所做的假设。
R
Rohan Patil

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

它解决了这个问题。


o
ochs.tobi

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

步骤1:转到服务器文件夹,例如xampp(或)wampp等。

Step2:打开其中的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)。
h
huu duy

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

将 ;extension=intl 更改为 extension=intl


m
munazzil

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

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

对于 php.ini 7.* 版本

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

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


Z
Ziaur Rahman

我在我的服务器上遇到了同样的问题。这主要是由于服务器版本和您的系统版本之间的php版本不匹配而发生的。我正在使用 Nginx 并检查了我所有的项目配置文件,它使用 php8.0,但在我的终端上它显示 php.8.1。实际上我的应用程序需要 php8.0。以下步骤解决了我的问题。

查看我所有正在运行的 php 版本

sudo update-alternatives --config php 

https://i.stack.imgur.com/BLyIV.png

为我的应用程序选择 php8.0。运行命令查看Nginx脚本是否正常

sudo nginx -t

然后重新加载 Nginx

sudo systemctl reload nginx

最后转到您的项目目录并更新或安装您的作曲家

composer update

它已经解决了我的问题,我希望同样会解决你的问题。


M
MAChitgarha

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

;extension=php_sockets.dll

(删除分号以取消注释)

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


P
Parth Patel

在最新的 XAMPP 版本中;您只需要在 php.ini 文件中找到 intl(第 912 行)。将 ;extension=intl 更改为 extension=intl


M
Mochi

就我而言,我使用的是ubuntu,运行这个命令,如果你的系统也是ubuntu就可以解决。

sudo apt-get install php-intl