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

wfsdck30  于 2022-11-07  发布在  PHP
关注(0)|答案(6)|浏览(326)

我对安装软件包几乎一无所知。不久前,我通过遵循一个非常具体的教程,成功地安装了Zend Framework 1 with Yum。
现在我需要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

我没有尝试消息中提到的建议,因为我不知道它们会做什么,我害怕破坏什么。这是一台生产机器,我没有其他机器来测试。我试图找到一个rpm下载,这是我的PHP相同的版本,但没有运气。
这两个建议有什么作用?它们是否 * 安全 *?我还可以尝试安装intl扩展吗?

idfiyjo8

idfiyjo81#

因为你有来自remi库的php-commom,所以你也需要从remi获取php-intl。
添加--enable-repo选项,如下所示:

yum --enablerepo=remi install php-intl
rsl1atfo

rsl1atfo2#

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

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

x3naxklr3#

我使用以下步骤通过pecl成功安装了INTL。
1)安装icu库(& L):
yum -y install php-devel phpize
2)php-devel包和phpize:
yum -y install php-devel phpize
3)当然还有GCC:
yum -y install gcc gcc-cpp gcc-c++
这是工作的me.my php版本是5.6.12

vnzz0bqm

vnzz0bqm4#

对于php 7.0使用


# list all options

$ sudo yum list php7*intl

# install

$ sudo yum install php70-intl
zi8p0yeb

zi8p0yeb5#

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-common(5.3.17-2)版本,而不是php-intl允许的版本。
我认为你有两个选择。(作为一个新手,我自己,我不会尝试这些没有在开发环境中练习。)

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个结果)

hujrc8aj

hujrc8aj6#

我想对费尔南多·瓦勒的回答做一点解释。
在我的Fedora 35机器上,我安装了多个php。为了检查有多少,我使用了Symfony的一个工具(我不知道如何这么快地完成其他操作):

$ symfony local:php:list
 +---------+--------------------------+---------+ 
 | Version |        Directory         |   PHP   |    
 +---------+--------------------------+---------+ 
 | 7.4.30  | /opt/remi/php74/root/usr | bin/php | 
 | 8.0.22  | /usr                     | bin/php |  
 | 8.1.10  | /opt/remi/php81/root/usr | bin/php |  
 +---------+--------------------------+---------+

假设我在8.1.10版本中缺少intl,首先检查intl.so是否确实不在它的modules目录中:php81 -r "echo ini_get('extension_dir');" .
要安装它,检查软件包由dnf list php*intl,你会得到这样的东西:

$sudo dnf list php*intl
Installed Packages
php-intl.x86_64  8.0.22-1.fc35  @updates
Available Packages
php-intl.x86_64   8.0.23-1.fc35  updates 
php-symfony-intl.noarch  2.8.52-7.fc35  fedora  
php-symfony3-intl.noarch  3.4.49-2.fc35 fedora  
...
php72-php-intl.x86_64  7.2.34-11.fc35.remi  remi    
php81-php-intl.x86_64  8.1.10-1.fc35.remi  remi    
php82-php-intl.x86_64  8.2.0~rc2-15.fc35.remi  remi

选择你需要的,比如说php8.1.10,并安装intl扩展:sudo dnf install php81-php-intl。它将在php 8.1的模块目录中弹出。

相关问题