Не удается установить расширение php Intl на MacosX

Я следую этому ссылка для установки этого расширения PHP, но я застрял на полпути.
Когда я пытаюсь запустить эту команду pecl install intl, я получаю следующее сообщение:

Specify where ICU libraries and headers can be found [DEFAULT] :

И я не знаю, где находятся библиотеки ICU.
Если я нажму Enter, я получу эту ошибку:

configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
ERROR: `/private/tmp/pear/install/intl/configure --with-php-config=/usr/bin/php-config --with-icu-dir=DEFAULT' failed

Как найти правильный путь к библиотекам ICU? Я использую High Sierra и MAMP с PHP версии 7.1.


person SlimenTN    schedule 07.01.2018    source источник
comment
Это может работать с использованием brew, как описано в ответе на этот вопрос: stackoverflow.com/questions/42085083/   -  person Kilian Batzner    schedule 07.01.2018
comment
Я пробовал это, но все равно не работает, видите ли, я пытался установить PayumBundle для symfony, и для этого требуется это расширение.   -  person SlimenTN    schedule 07.01.2018


Ответы (3)


ICU расшифровывается как ICU — международные компоненты для Unicode.

Установите его с помощью варева

brew update
brew search icu # returns 'icu4c'
brew install icu4c

OR

Установите его с помощью pecl

sudo pecl update-channels
sudo pecl install intl

установка пакета intl на osx

person Cedric    schedule 07.01.2018
comment
Спасибо за ваш ответ, но он все еще просит меня ввести путь icu всякий раз, когда я пытаюсь использовать sudo pecl install intl - person SlimenTN; 09.01.2018
comment
Как насчет первого метода, с brew ? - person Cedric; 09.01.2018
comment
stackoverflow.com/questions/13726386/ - person Cedric; 09.01.2018
comment
Да, я нашел путь по предоставленной вами ссылке, большое спасибо :) - person SlimenTN; 09.01.2018
comment
Я сталкивался с тем же. Brew install icu4c, похоже, работает, но sudo pecl install intl не работает. Он пытается установить в каталог по умолчанию. Получите ОШИБКУ: `make' не удалось. Все еще получаю «Установите и включите расширение intl (используется для валидаторов)». - person Daniel; 28.03.2018
comment
Идеальный. Не стесняйтесь голосовать, если ответ помог вам. - person Cedric; 28.03.2018
comment
@dan Установка php56-intl для php 7.1? Если я пытаюсь установить php56-intl, я получаю эту ошибку: Error: No formulae found in taps. - person Szekelygobe; 08.10.2018
comment
sudo pecl install intl .команда возвращает configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works. ERROR: "/private/tmp/pear/install/intl/configure --with-php-config=/usr/local/bin/php-config --with-icu-dir=DEFAULT' failed" - person mapmalith; 29.05.2019
comment
sudo pecl install intl для php 7.3 возвращает ошибку: In file included from /private/tmp/pear/temp/intl/php_intl.h:34: /private/tmp/pear/temp/intl/intl_error.h:24:10: fatal error: 'ext/standard/php_smart_str.h' file not found #include <ext/standard/php_smart_str.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: make' failed` - person Shankar; 20.06.2020
comment
make все еще не работает со мной, как и с @Shankar. Ты смог решить это, приятель? - person Fr0zenFyr; 23.10.2020

РЕДАКТИРОВАТЬ: после лучшего просмотра в [email protected] кажется, что он уже скомпилирован с «intl»

php -i | grep intl
... '--enable-intl' ...

Так что мой ответ обычно бесполезен для [email protected] (но я думаю, что в некоторых случаях он может быть полезен)


Сегодня я столкнулся с той же проблемой, пытаясь переключиться с php56 на [email protected].

После долгих копаний вот обходной путь.

Убедитесь, что у вас чистая установка [email protected] и последняя версия.

php -v
PHP 5.6.35 (cli) (built: Mar 31 2018 20:21:31)

Также убедитесь, что у вас есть icu4c

brew update
brew install icu4c

Далее мы установим и скомпилируем intl вручную

cd /usr/local/src/
wget https://pecl.php.net/get/intl-3.0.0.tg
tar zxf intl-3.0.0.tgz
cd intl-3.0.0/
phpize --clean
phpize
./configure    

И вот в чем хитрость, отредактируйте Makefile

vi Makefile

Измените строку CXXFLAGS следующим образом.

CXXFLAGS = -g -O2 -std=c++11

И строка CPPFLAGS следующим образом

CPPFLAGS = -DHAVE_CONFIG_H -DU_USING_ICU_NAMESPACE=1

Далее сохраняем и компилируем

make
make install

И вуаля

Installing shared extensions:     /usr/local/Cellar/[email protected]/5.6.35/pecl/20131226/

Не забудьте добавить extension="intl.so" в ваш php.ini

vi /usr/local/etc/php/5.6/php.ini

(и перезапустить апач)

Источники:

person Cédric    schedule 09.04.2018

загрузите версию PHP, которую вы используете в XAMPP, с php.net. Я использую 7.3. Эта версия работала для меня: php-7.3, я предполагаю, что если вы выполните шаги, это может работать и для 7.0 или 7.2.

Извлеките файл tar.gz с помощью (я извлек его в папку ~/Downloads/)

tar -xzvf php-7.1.31.tar.gz cd в извлеченную папку

cd php-7.1.31 изменить на подпапку ext/intl

cd ext/intl/ Запустите эти команды, чтобы построить расширение

/Приложения/XAMPP/bin/phpize

./configure --enable-intl --with-php-config=/Applications/XAMPP/bin/php-config --with-icu-dir=/Applications/XAMPP/xamppfiles/

делать

судо сделать установить

теперь вы можете удалить все загруженные файлы, а также извлеченные папки.

Откройте /Applications/XAMPP/xamppfiles/etc/php.ini и добавьте extension=intl.so

Вот и все! Перезапустите Apache с помощью графического интерфейса XAMPP, и он должен работать. Вы должны запускать эти команды каждый раз, когда устанавливаете новую версию XAMPP.

person sonam    schedule 20.11.2019
comment
Круто, ты спас мой день! Большое спасибо, сэр - person Andresa Martins; 21.04.2020
comment
Небольшое примечание: сначала вам нужно установить autoconf (brew install autoconf) - person Andresa Martins; 22.04.2020
comment
Большое спасибо! Это сработало для меня с XAMPP и PHP 7.3 - person Marvin Krüger; 20.01.2021