Установка 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)
- открыто
/xampp/php/php.ini
- + Изменить
;extension=php_intl.dll
вextension=php_intl.dll
(удалите точку с запятой) - Скопируйте все
/xamp/php/ic*.dll
файлы в/xampp/apache/bin
- Перезапустите apache в панели управления Xampp
Решение Linux (спасибо Аннамалай Сомасундарам)
Установите расширение php5-intl
sudo apt-get install php5-intl
1.1. Альтернативно использовать
sudo yum install php5-intl
если вы на CentOS или Fedora.Перезапустите Apache
sudo service apache2 restart
Решение Mac / OSX (доморощенный) (спасибо деизелю)
- Установите расширение php5-intl
brew install php56-intl
- Если вы получаете
No available formula for php56-intl
следуйте этим инструкциям. - Перезапустите 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