无法在 MacosX 上安装 php 国际扩展
Can't install php Intl extension on MacosX
我正在按照此 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
ICU 代表 ICU - Unicode 的国际组件
用 brew 安装它
brew update
brew search icu # returns 'icu4c'
brew install icu4c
或
用pecl安装
sudo pecl update-channels
sudo pecl install intl
编辑:仔细查看 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
AND 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)
来源:
从 php.net 下载您在 XAMPP 中使用的 PHP 版本。我正在使用 7.3。这个版本对我有用:php-7.3,
我猜如果您按照这些步骤进行操作,它也可能适用于 7.0 或 7.2。
提取 tar.gz 文件使用(我将其提取到 ~/Downloads/ 文件夹中)
tar-xzvfphp-7.1.31.tar.gz
cd 进入提取的文件夹
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/
制作
须藤安装
您现在可以删除所有下载的文件以及解压的文件夹。
打开 /Applications/XAMPP/xamppfiles/etc/php.ini ,添加扩展名=intl.so
就是这样!使用 XAMPP GUI Restart 你的 Apache,它应该可以工作。每次安装 XAMPP.
的新版本时,您都必须 运行 这些命令
我正在按照此 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 和 MAMPICU 代表 ICU - Unicode 的国际组件
用 brew 安装它
brew update
brew search icu # returns 'icu4c'
brew install icu4c
或
用pecl安装
sudo pecl update-channels
sudo pecl install intl
编辑:仔细查看 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
AND 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)
来源:
从 php.net 下载您在 XAMPP 中使用的 PHP 版本。我正在使用 7.3。这个版本对我有用:php-7.3, 我猜如果您按照这些步骤进行操作,它也可能适用于 7.0 或 7.2。
提取 tar.gz 文件使用(我将其提取到 ~/Downloads/ 文件夹中)
tar-xzvfphp-7.1.31.tar.gz cd 进入提取的文件夹
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/
制作
须藤安装
您现在可以删除所有下载的文件以及解压的文件夹。
打开 /Applications/XAMPP/xamppfiles/etc/php.ini ,添加扩展名=intl.so
就是这样!使用 XAMPP GUI Restart 你的 Apache,它应该可以工作。每次安装 XAMPP.
的新版本时,您都必须 运行 这些命令