Композитор: запрошенный PHP-расширение ext-intl * отсутствует в вашей системе

Я пытаюсь использовать файл composer.json. но, когда я пытаюсь запустить команду 'composer install' в моем path/project/, я получаю сообщение об ошибке:

enter image description here

Я уже настроил свой wamp для 'extension=php_intl.dll' и скопировал все icu*.dll в 'D:\wamp\bin\apache\apache2.2.22\bin' из 'D:\wamp\bin\php\php5.3.13' и отобразил в phpinfo():

enter image description here

без копирования icu*.dll также работает и отображается в phpinfo();

Пожалуйста, дайте мне знать, если у меня установлена ​​ intl на моем wamp и composer install на моем компьютере, то почему Я получаю эту ошибку. действительно, это так раздражает.

Вот мои подробности:

  • ОС: windows 7 (64)
  • PHP: 5.3.13
  • Apache: 2.2.22
  • Композитор: установлен исполняемым файлом
  • Груша: установлена ​​(последняя)
  • PHPUnit: установлен (последний)

Мой composer.json выглядит следующим образом:

{
    "name" : "sebastian/money",
    "description" : "Value Object that represents a monetary value (using a currency smallest unit)",
    "keywords" : ["money"],
    "homepage" : "http://www.github.com/sebastianbergmann/money",
    "license" : "BSD-3-Clause",
    "authors" : [{
            "name" : "Sebastian Bergmann",
            "email" : "[email protected]"
        }
    ],
    "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

Проблема с wamp обычно заключается в том, что она использует другой php.ini для командной строки php, чем для web/apache php. Таким образом, вы видите расширение intp в phpinfo() в браузере, но если вы запустите php -m в командной строке, вы увидите, что в списке расширений там нет intl.

Вы можете проверить, используя php -i поверх вывода, он должен указать вам, откуда загружен ini файл. Убедитесь, что вы включили внутреннее расширение в этом ini файле, и вам должно быть хорошо идти.

Ответ 2

Я столкнулся с этим, используя его в Mac, решил это с помощью --ignore-platform-reqs.

composer install --ignore-platform-reqs

Ответ 3

Чтобы включить расширение intl, следуйте инструкциям ниже.

Вам нужно включить расширение, раскомментировав следующее расширение строки = php_intl.dll в файле C:\xampp\php\php.ini.  Как только вы раскомментируете расширение = php_intl.dll, вы должны перезапустить сервер Apache с помощью панели управления XAMPP.

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

(Примечание: файл php.ini в основном находится в следующем каталоге C:\xampp\php)

Перезапустить xampp

Ответ 4

В linux (например, Debian Jessie):

apt-get install php7.0-intl

сделает задание должным образом создаст символьную ссылку на него.

Ответ 5

просто удали их

"ext-intl" : "*"

из вашего файла composer.json.

Поскольку иногда для некоторых вспомогательных функций среда IDE жалуется, что в файле composer.json отсутствует расширение. Сразу нажмите Alt + Enter, чтобы добавить его в композитор. Но это не значит, что композитор будет считать их. Композитор будет жаловаться в следующий раз при выполнении некоторых операций. Таким образом, мы не должны слепо набирать Alt + Enter, а не устанавливать их вручную в composer, выполнив composer install <package-name>.

Поскольку я думаю, что вы ввели его вручную, вы должны удалить его, а затем установить его в правильной процедуре composer install <package-name>

Или же вы можете запустить composer update для подсчета добавленных зависимостей.

Ответ 6

Просто раскомментируйте эту строку (чтобы найти ее, просто выполните поиск в этой строке в редакторе):

;extension=php_sockets.dll

(Удалить точку с запятой, чтобы раскомментировать)

Для меня нет необходимости перезапускать XAMPP (в вашем случае WAMP). Но если это не сработало, перезапустите его.

Ответ 7

Это старый вопрос, но я столкнулся с такой же проблемой на базовом сервере Linux при установке magento 2.

Когда я запускаю команду composer update или composer install из моего корневого каталога magento. Его ошибка была ниже ошибки.

Problem 1
    - The requested PHP extension ext-intl * is missing from your system. Install or enable PHP intl extension.
  Problem 2
    - The requested PHP extension ext-mbstring * is missing from your system. Install or enable PHP 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, не беспокойтесь. Шаги и требования:

  • Шаг 1: Перейдите в папку на сервере, такую как xampp (или) wampp и т.д.
  • Шаг 2: откройте папку php внутри нее и перейдите в папку ext.
  • Шаг 3: Если вы найдете файл с именем php_intl.dll, нет проблем.

Просто зайдите в файл php.ini и раскомментируйте строку

От:

;extension=php_intl.dll

Для того, чтобы:

extension=php_intl.dll
  • Шаг 4: перезапустите xampp, вот и все

Примечание. Если вы не нашли ни одного файла с именем php_intl.dll, вам необходимо обновить версию PHP.

Ответ 9

(с сервером xampp) откройте php.ini в ".\xampp\php"

изменить ; расширение = intl на расширение = intl