Установка CakePHP 3.0: расширение int отсутствует в системе

Используя CakePHP docs, я пытаюсь установить 3.0-beta2 с помощью composer, но я получил эту ошибку:

cakephp/cakephp 3.0.x-dev requires ext-intl * -> the requested PHP extension intl is missing from your system

Тем не менее, я точно знаю, что intl установлен (он показывает на phpinfo). Я использую PHP 5.4.33/Apache 2.4.10.1

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

18 ответов

Я столкнулся с той же проблемой сегодня. Вам необходимо включить расширение intl PHP в вашей конфигурации PHP (.ini).

Решение Xampp (Windows)

  1. открыто /xampp/php/php.ini
  2. + Изменить ;extension=php_intl.dll в extension=php_intl.dll (удалите точку с запятой)
  3. Скопируйте все /xamp/php/ic*.dll файлы в /xampp/apache/bin
  4. Перезапустите apache в панели управления Xampp

Решение Linux (спасибо Аннамалай Сомасундарам)

  1. Установите расширение php5-intl sudo apt-get install php5-intl

    1.1. Альтернативно использовать sudo yum install php5-intl если вы на CentOS или Fedora.

  2. Перезапустите Apache sudo service apache2 restart

Решение Mac / OSX (доморощенный) (спасибо деизелю)

  1. Установите расширение php5-intl brew install php56-intl
  2. Если вы получаете No available formula for php56-intl следуйте этим инструкциям.
  3. Перезапустите Apache sudo apachectl restart

В конце концов вы можете запустить composer install чтобы проверить, работает ли он. Это даст ошибку, если это не так.

Я столкнулся с той же проблемой в Ubuntu 12.04

Установлены: sudo apt-get install php5-intl

Перезапустил Apache: sudo service apache2 restart

OS X Homebrew (май 2015):

intl расширение было удалено из основного php5x формул, так что вы больше не компилируете с --enable-intl флаг.

Если вы не можете найти новый пакет:

$ brew install php56-intl
Error: No available formula for php56-intl

Следуйте этим инструкциям: https://github.com/Homebrew/homebrew-php/issues/1701

$ brew install php56-intl
==> Installing php56-intl from homebrew/homebrew-php

При использовании MAMP

1 Перейти к терминалу

vim ~/.bash_profile

i

export PATH=/Applications/MAMP/bin/php/php5.6.2/bin:$PATH

Измените php5.6.2 на версию php, которую вы используете с MAMP

Хит ESC, Тип :wq, нажмите Enter

source ~/.bash_profile

какой php

2 Установите порты Mac

https://www.macports.org/install.php

sudo port install php5-intl ИЛИ ЖЕ sudo port install php53-intl

cp /opt/local/lib/php/extensions/no-debug-non-zts-20090626/intl.so /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/

{take a good look at the folder names that u use the right ones}

3 Добавьте расширение

Теперь добавьте расширение к вашему php.ini файл:

extension=intl.so

Полезная ссылка: https://gist.github.com/irazasyed/5987693

В сообщении об ошибке четко указано, в чем проблема. Вам нужно установить расширение intl.

Шаг 1: установите PHP в удобной для вас версии

$sudo apt-get install php-intl

шаг 2:

Поскольку расширение XAMPP Server intl уже установлено, вам необходимо включить его, чтобы раскомментировать ниже строки в файле php.ini. Файл Php.ini находится по адресу c:\xampp\php\php.ini или там, где вы установили XAMPP.

Прежде чем раскомментировать:

; extension = php_intl.dll; extension = php_mbstring.dll

После раскомментирования:

extension = php_intl.dll extension = php_mbstring.dll

Краткий ответ: активируйте расширение intl в php_cli.ini. Спасибо @ndm за его вклад.

Если вы используете последнюю версию Ubuntu 16.04 или выше, просто сделайте

sudo apt-get install php-intl

Затем перезагрузите ваш Apache

sudo service apache2 restart

В моем случае моя работающая версия php 7.1.x на Mac OSX. Я установил команду intl с помощью brew install php71-intl. Размещение extension=intl.so внутри php.ini не дало никаких результатов. Наконец, я искал каталог с установленным расширением, и там я увидел intl.so и поместил этот путь (расширение =/usr/local/Cellar/php71-intl/7.1.11_20/intl.so) в мой файл php.ini, и он решил мою проблема.

Для терминала Ubuntu:

Пожалуйста, следуйте инструкциям:

Шаг 1:

CD ~

Шаг -2: Запустите следующие команды

sudo apt-get установить php5-intl

Шаг-3: Затем вам нужно перезапустить Apache

перезапуск службы sudo apache2


Для Windows(XAMPP):

Найдите файл Php.ini:

/xampp/php/php.ini

Обновите файл php.ini, используя точку с запятой (;), как указано ниже:

; extension=php_intl.dll для extension=php_intl.dll

и сохраните файл php.ini.

После этого вам нужно

Перезапустите xampp, используя элемент управления xampp.

В моем случае я на самом деле не пытался запускать cakephp локально, я просто пытался заставить его автоматически обновляться локально с помощью composer (потому что я играю с написанием плагинов, которые вы устанавливаете с помощью composer). Поскольку я даже не запускаю его локально, я могу просто игнорировать требования, добавив флаг --ignore-platform-reqs.

php composer.phar update --ignore-platform-reqs

В моем случае (xampp PHP 8.0)
найти ;extension=intlв /xampp/php/php.ini
Удалять ;и перезапустите апач

Сделай это

В XAMPP расширение intl включено, но вы должны раскомментировать extension =php_intl.dll в php.ini и перезапустить сервер через панель управления XAMPP. В WAMP расширение intl "активировано" по умолчанию, но не работает. Чтобы это работало, вам нужно перейти в папку php (по умолчанию) C:\wamp\bin\php\php{version}, скопировать все файлы, которые выглядят как icu*.dll, и вставить их в каталог apache bin C: \ WAMP \ Bin \ Apache \ апача {версия}\ Bin. Затем перезапустите все службы, и все должно быть в порядке.

если вы используете XAMPP, сделайте это: 1. выключите XAMPP 2. Модифицированный php.ini находится в c/:xampp/php/php.ini 3. Расширение intl включено, но вы должны раскомментировать extension =php_intl.dll в php. ini и перезапустите сервер через панель управления XAMPP.

Для Fedora Linux с nginx и php-fpm вы можете установить с помощью:

      $ dnf install php-intl

Перезапуск nginx здесь не требуется.

У меня была такая же проблема в Windows. Ошибка заключалась в том, что я установил несколько версий PHP, а переменные среды работали с неверным путем .

Для тех, кто получает Package not found ошибка попытка sudo apt-get install php7-intl затем беги composer install в каталоге вашего проекта.

Intl Means: расширение интернационализации, которое позволяет программистам выполнять UCA-совместимое сопоставление и форматирование чисел, валюты, даты и времени в сценариях PHP.

Для включения PHP Intl с PECL можно использовать.

pecl install intl

На обычном RHEL/CentOS/Fedora PHP Intl можно установить с помощью yum

yum install php-intl

В Ubuntu PHP Intl можно установить с помощью apt-get

 apt-get install php5-intl

Перезапустите службу Apache, чтобы изменения вступили в силу.

это оно

Я использую Linux Ubuntu 20, вы можете попробовать это:

Проверьте установленные модули php:
php -m | grep intl

Если эта команда не дает результатов, вам следует просто установить модуль:
sudo apt-get install php7.4-intl
вам нужно будет изменить *php7.4на желаемую версию php.

вы должны перезапустить apache, когда закончите:
sudo service apache2 restart

Я использую Mac OS High Sierra, и ни один из них не помог мне. Но после долгих поисков я нашел тот, который работал!

Это может показаться тривиальным, но на самом деле около 2 месяцев назад некоторые умные ребята внесли изменения в хранилище brew, сделав так: brew install php71-intl покажет вам ошибку с сообщением, что такой рецепт не существует.

К счастью, есть. В другом репозитории Brew есть временное исправление, поэтому все, что вам нужно сделать, это:

brew tap kyslik/homebrew-php
brew install kyslik/php/php71-intl

ИСТОЧНИК: http://blastar.biz/2018/04/14/how-to-enable-php-intl-extension-for-php-7-1-using-xampp-on-macos-high-sierra/

Другие вопросы по тегам