我跟着这个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库的正确路径? 我在PHP版本7.1中使用High Sierra和MAMP
答案 0 :(得分:3)
编辑:在php@5.6中更好看之后,它似乎已经用'intl'编译了
php -i | grep intl
... '--enable-intl' ...
所以我的回答通常对php@5.6没用(但在某些情况下我觉得很有用)
我今天面临同样的问题,试图从php56切换到php@5.6。
经过大量挖掘,这是解决方法。
确保干净安装php@5.6并将其保存在当前版本
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/php@5.6/5.6.35/pecl/20131226/
不要忘记将extension="intl.so"
添加到php.ini
vi /usr/local/etc/php/5.6/php.ini
(并重启apache)
来源:
答案 1 :(得分:2)
ICU代表 ICU - Unicode的国际组件
使用brew安装
brew update
brew search icu # returns 'icu4c'
brew install icu4c
OR
使用pecl
安装它sudo pecl update-channels
sudo pecl install intl
答案 2 :(得分:0)
从php.net下载在XAMPP中使用的PHP版本。我正在使用7.3。这个版本对我有用:php-7.3, 我猜您是否按照以下步骤操作也可能适用于7.0或7.2。
使用提取tar.gz文件(我将其解压缩到〜/ Downloads /文件夹中)
tar -xzvf php-7.1.31.tar.gz 进入提取的文件夹
cd php-7.1.31 更改为ext / intl子文件夹
cd ext / intl / 运行这些命令以构建扩展
/ Applications / XAMPP / bin / phpize
./ configure --enable-intl --with-php-config = / Applications / XAMPP / bin / php-config --with-icu-dir = / Applications / XAMPP / xamppfiles /
制作
sudo make install
您现在可以删除所有下载的文件以及提取的文件夹。
打开/Applications/XAMPP/xamppfiles/etc/php.ini,并添加extension = intl.so
就是这样!使用XAMPP GUI重新启动Apache,它应该可以工作。每次安装新版本的XAMPP时,都必须运行这些命令。