我正在尝试使用 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()
中使用和显示;
请告诉我是否在我的 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"
}
}
}
让我知道是否需要任何其他详细信息..
任何反馈/帮助将不胜感激。
我在 Mac 中使用它时遇到了这个问题,通过使用 --ignore-platform-reqs
选项解决了它。
composer install --ignore-platform-reqs
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
php --ini
将显示 CLI 配置文件名。
mbstring
扩展:sudo apt-get install php-mbstring
extension=php_intl.dll
在 web/apache php 的 php.ini 中 & ;& 保留 php-cli 的 php.ini 原样 (因为对 php-cli 执行相同操作会使 php 在终端中通过此错误:PHP 警告:PHP启动:无法加载动态库...) ||在此之后一切都运行良好!
在 linux 中(例如 Debian Jessie):
apt-get install php7.0-intl
将为您完成工作,因为将创建一个符号链接。
要启用国际扩展,请按照以下说明进行操作。
您需要通过取消注释 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
我通过在 ubuntu 中使用 composer install 添加 --ignore-platform-reqs 命令解决了这个问题。
composer install --ignore-platform-reqs
只需删除它们
"ext-intl" : "*"
从您的 composer.json 文件中。
因为有时对于某些辅助函数,IDE 会抱怨 composer.json 文件中缺少扩展名。立即按 Alt+Enter 将其添加到作曲家。但这并不意味着作曲家会把它们算进去。作曲家下次在做一些操作时会抱怨。因此,我们不应该盲目地键入 Alt+Enter,而不是通过执行 composer install <package-name>
在 composer 中手动安装它们。
我认为您是手动输入的,您应该删除它,然后按照正确的程序安装它composer install <package-name>
否则,您可以运行 composer update
来计算添加的依赖项。
这是一个有点老的问题,但我在安装 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
它解决了这个问题。
如果您在运行 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 版本。
(使用 xampp 服务器)在 ".\xampp\php" 中打开 php.ini
将 ;extension=intl 更改为 extension=intl
对于 php.ini 5.6 版本(使用 php -v 检查版本)
;扩展=php_intl.dll ;删除分号并保持这样 extension=php_intl.dll
对于 php.ini 7.* 版本
;扩展=国际;删除分号并保持这样 extension=intl
注意 - 之后确保在本地计算机中重新启动 Xampp、Wamp 服务器。
我在我的服务器上遇到了同样的问题。这主要是由于服务器版本和您的系统版本之间的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
它已经解决了我的问题,我希望同样会解决你的问题。
只需取消注释此行(要找到它,只需在编辑器中搜索此行):
;extension=php_sockets.dll
(删除分号以取消注释)
对我来说,不需要重新启动 XAMPP(在你的情况下是 WAMP)。但如果不起作用,请重新启动它。
在最新的 XAMPP 版本中;您只需要在 php.ini 文件中找到 intl(第 912 行)。将 ;extension=intl 更改为 extension=intl
就我而言,我使用的是ubuntu,运行这个命令,如果你的系统也是ubuntu就可以解决。
sudo apt-get install php-intl