如何在 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,你必须同时启用 remi
和 remi-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)