簡體   English   中英

如何在 CentOS 上安裝 PHP 國際擴展?

[英]How do I install PHP intl extension on CentOS?

我對安裝軟件包幾乎一無所知。 通過遵循一個非常具體的教程,我設法用 yum 安裝了 Zend Framework 1。

現在我需要 PHP 國際擴展,我不知道如何安裝它。

我做了

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 擴展?

由於您有來自 remi 存儲庫的 php-commom,您還需要從 remi 獲取 php-intl。

添加--enable-repo選項如下:

yum --enablerepo=remi install php-intl

如果你有更高的PHP版本5.6一樣,你必須同時啟用remiremi-php56回購全部安裝額外的依賴關系:

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

我使用以下步驟通過 pecl 成功安裝了 INTL。

1)安裝icu和libs:

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

對於 php 7.0 使用

#list all options    
$ sudo yum list php7*intl

#install
$ sudo yum install php70-intl

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個結果)

稍微詳細說明@Fernando Valler的回答。

在我的 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 |  
 +---------+--------------------------+---------+ 

假設我想念intl版的國際。 首先檢查intl.so是否確實不在其模塊目錄中: 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 

Select 你需要什么,比如php8.1.10 ,並為其安裝 intl 擴展: sudo dnf install php81-php-intl 它將在 php 8.1 的模塊目錄中彈出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM