PHP7安装intl扩展和linux安装icu

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP7安装intl扩展和linux安装icu相关的知识,希望对你有一定的参考价值。

参考技术A php intl 是国际化扩展,是ICU 库的一个包装器。所以在安装PHP intl扩展前要先安装ICU库,安装ICU库的具体步骤::

二 安装intl扩展
1:进入php7.2.5源码:

2:运行:phpize ,找不到命令时,将路径补全:/usr/local/php7/bin/phpize(是php的安装路径),出现如下:

Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525

Zend Extension Api No: 220100525

3:运行配置

./configure --enable-intl --with-icu-dir=/usr/local/icu/ --with-php-config=/usr/local/php7/bin/php-config

注:前面路径为icu的安装路径,后面路径为php的安装路径。

4:编译扩展:make

5:复制扩展到目标文件夹

cp /user/local/php/php7.2.5/ext/intl/modules/intl.so /user/local/php7/lib/php/extensions/no-debug-non-zts-20170718

注意:也可以find / -name intl.so 查找。

6:设置扩展加入配置文件中:

[intl]
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/"

extension=intl.so

大坑:::采用phpinfo()时,无法找到配置的intl扩展,说明配置没有生效。。。。。。

原因:在编译php时没有 --with-config-file-path=PATH 指定php.ini路径,默认的路径为/usr/local/php7/lib,只需要将php.ini放入这个默认的路径即可。你也可以安装配置php时加入,如下:

./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --with-apxs2=/usr/bin/apxs
访问:index.php中phpinfo()文件。

请安装 \"intl\" 扩展以获得完整的本地化功能

【中文标题】请安装 \\"intl\\" 扩展以获得完整的本地化功能【英文标题】:Please install the \"intl\" extension for full localization capabilities请安装 \"intl\" 扩展以获得完整的本地化功能 【发布时间】:2017-07-31 10:25:40 【问题描述】:

我正在使用 macOS Sierra 和 PHP 7 安装。我已经安装了 ICU 和 Intl,以便使用 Symphony 的 Intl 组件。

我正在尝试这样做:

$localCurrency = new NumberFormatter('en_US', \NumberFormatter::CURRENCY);
$localCurrency = $localCurrency->getTextAttribute(NumberFormatter::CURRENCY_CODE);

但是我收到了这个错误:

Symfony\Component\Intl\NumberFormatter\NumberFormatter::__construct() 方法的参数 $locale value 'en_US' 行为未实现。仅支持语言环境“en”。请安装“intl”扩展以获得完整的本地化功能。

问题是我安装了 intl 和 ICU,它在 php -iphpinfo(); 中都可见。

另外,我已经将 intl 组件安装到了 symphony,它在 vendor 中也是可见的。

所以我真的不知道是什么问题。

【问题讨论】:

您是否尝试过从php.ini启用国际扩展? 是的,如上所述,它已启用并加载。我已经在下面发布了答案。 【参考方案1】:

看起来问题出在 use 语句上,我应该只使用 use NumberFormatter; 而不是那个交响乐,因为它只是一个 polyfill。

现在它工作正常。

【讨论】:

以上是关于PHP7安装intl扩展和linux安装icu的主要内容,如果未能解决你的问题,请参考以下文章

安装 PHP 7 后如何安装/启用 intl 和 xsl 扩展

请安装 \"intl\" 扩展以获得完整的本地化功能

安装并启用 intl 扩展(用于验证器)。 - MAC(Prestashop)

在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

Linux下php7的memcached扩展安装

谁能给详细Linux php7安装tidy扩展步骤