web-dev-qa-db-ja.com

MacosXにphp Intl拡張機能をインストールできません

私はこれに従っています link これをインストールするために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で使用しています

9
SlimenTN

ICUはICU-Unicodeの国際コンポーネントの略です

Brewでインストールする

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

OR

Peclでインストールする

Sudo pecl update-channels
Sudo pecl install intl

osxにintlパッケージをインストールする

2
Cedric

編集:[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

AND 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

(およびApacheを再起動するため)

ソース:

3
Cédric