如何在 CentOS 上安装 PHP intl 扩展?

Posted

技术标签:

【中文标题】如何在 CentOS 上安装 PHP intl 扩展?【英文标题】:How do I install PHP intl extension on CentOS? 【发布时间】:2013-01-18 18:05:57 【问题描述】:

我对安装软件包几乎一无所知。通过遵循一个非常具体的教程,我设法用 yum 安装了 Zend Framework 1。

现在我需要 php intl 扩展,但我不知道如何安装它。

我做到了

yum list php*intl

并看到有一个可用。所以我做到了

yum install php-intl

并收到以下错误消息:

Error: Package: php-intl-5.3.3-14.el6_3.x86_64 (updates)
       Requires: php-common = 5.3.3-14.el6_3
       Installed: php-common-5.3.17-2.el6.remi.x86_64 (@remi)
           php-common = 5.3.17-2.el6.remi
       Available: php-common-5.3.3-3.el6_2.8.x86_64 (base)
           php-common = 5.3.3-3.el6_2.8
       Available: php-common-5.3.3-14.el6_3.x86_64 (updates)
           php-common = 5.3.3-14.el6_3
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

我没有尝试消息中提到的建议,因为我不知道他们会做什么,而且我害怕破坏某些东西。这是一台生产机器,我没有另一台机器可以测试。我试图找到一个与我的 PHP 版本相同的 rpm 来下载,但没有运气。

这两个建议有什么作用?它们是否安全可以尝试? 我还能尝试什么来安装 intl 扩展?

【问题讨论】:

【参考方案1】:

Yum 抛出错误,因为我们正在尝试将多个软件包更新为冲突的版本。您的 yum 输出表明 php-intl 需要特定版本的 php-common。删除所有垃圾:

Requires 5.3.3-14
Installed 5.3.17-2
Available 1st Option: 5.3.3-3
Available 2nd Option: 5.3.3-14

这告诉我们你已经安装了一个比 php-intl 允许的更新版本的 php-common (5.3.17-2)。

我认为你有两个选择。 (作为一个新手,我不会在没有在开发环境中练习的情况下尝试这些。)

1) 删除 remi 包

引用关于超级用户的类似问题。 “尝试删除所有 remi php 包,禁用 remi 存储库并安装默认的 centos 6 php 5.3.3 包。”

https://superuser.com/questions/505340/centos-6-how-to-install-php-mysql-when-php-common-remi-is-present

2) 将 php-common 降级到版本 5.3.3-14

yum downgrade php-common

我不知道您是否会遇到更多依赖问题并不得不降级其他软件包。我在这里找到了更多详细信息。

https://www.centos.org/modules/newbb/viewtopic.php?topic_id=40567&forum=56

其他 Stack Exchange 网站也有类似的问题。

https://serverfault.com/search?q=centos+error+package(370 个结果)

https://unix.stackexchange.com/search?q=centos+error+package(57 个结果)

【讨论】:

【参考方案2】:

由于您从 remi 存储库获得 php-commom,因此您还需要从 remi 获得 php-intl。

添加--enable-repo选项如下:

yum --enablerepo=remi install php-intl

【讨论】:

我无法对此进行测试,因为 remi 现在是 PHP 5.4,我还没有准备好升级。但答案完全有道理,我认为当 remi 仍然是 PHP 5.3.x 时它会给出预期的结果。 你说得对,我收到了同样的错误信息,但我使用的是 PHP 5.4 如果您对 Remi 存储库使用“多个版本”方法,您需要的命令是 yum install php56-php-intl(用您选择的版本替换 56)。【参考方案3】:

如果你有更高的 PHP 版本,比如 5.6,你必须同时启用 remiremi-php56 repos 来安装所有额外的依赖项:

yum --enablerepo=remi,remi-php56 install php-intl

【讨论】:

如果您对 Remi 存储库使用“多个版本”方法,您需要的命令是 yum install php56-php-intl(用您选择的版本替换 56)。【参考方案4】:

我使用以下步骤通过 pecl 成功安装了 INTL。

1) 安装 icu 和库:

yum -y install icu libicu libicu-devel

2) php-devel 包和 phpize:

yum -y install php-devel phpize

3),当然还有 gcc:

yum -y install gcc gcc-cpp gcc-c++

这对我有用。我的 php 版本是 5.6.12

【讨论】:

不要使用已被弃用和过时的 PECL 扩展,因为它现在合并在 php-src 中。所有 PHP 包的提供者都有它。如果你可以安装 php-devel,你也可以安装 php-来自同一来源的国际。【参考方案5】:

对于 php 7.0 使用

#list all options    
$ sudo yum list php7*intl

#install
$ sudo yum install php70-intl

【讨论】:

以上是关于如何在 CentOS 上安装 PHP intl 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

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

在 XAMPP 上安装 Php-intl

在 MacOSx php7 上安装 intl 扩展时出错

在 MacOS 上安装 PHP intl 扩展 [关闭]

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

Centos6 下PHP的SSH2扩展安装