Centos

如何在已預裝 Apache HTTPD 的 CentOS 上安裝 PHP?

  • July 29, 2021

我正在使用 CentOS 7。我想安裝 PHP 7,所以我使用remi-php了(最新的 PHP 版本yum是 5.4)。由於HTTPD版本yum太舊,我從源碼編譯了最新的HTTPD版本。

remi-php但是,當我嘗試使用以下命令進行安裝時,HTTPD 編譯非常順利:

yum --enablerepo=remi-php71 install php php-cli php-intl php-mbstring php-mcrypt php-mysqlnd

要安裝phpyum也會安裝舊版本的httpd(雖然我已經編譯並使用了最新的HTTPD版本)。如果我繼續安裝,我的 HTTPD 將拋出一個錯誤(並且不會啟動),但如果我不繼續安裝,我將沒有該php*.so文件並且 apache 不會解析這些.php文件。

那麼,如何在php不影響之前編譯的 Apache HTTPD 的情況下安裝呢?我不希望我的伺服器同時擁有兩個 Apache HTTPD 實例,並且將來可能會出現問題。

你給出的答案對我很有幫助。

我會很感激你的回答。

我建議改用軟體集合(SCL)。它提供受支持的 PHP(最高 7.3)和 HTTPd(2.4)版本,至少在 2024 年 CentOS 7 達到生命週期結束之前。首先,安裝 SCL 的儲存庫:

yum install centos-release-scl centos-release-scl-rh

然後您可以安裝 PHP 和 HTTPd 的 SCL 版本:

yum install httpd24 rh-php73

這將引入所需的基本依賴項。要安裝您在下面提到的其他 PHP 模組,包名稱將帶有前綴rh-php73

yum install rh-php73-php-cli rh-php73-php-intl rh-php73-php-mbstring rh-php73-php-mysqlnd

我無法找到php-mcrypt7.3 的 SCL 版本,因此您可能需要找到一種方法來自行建構該版本。但是,它在 PHP 7.1 中被標記為已棄用,並將在 7.2 中從 PHP 核心中刪除,因此這可能是意料之中的。PHP 項目推薦以下替代方案:

  • 使用OpenSSL。對此的支持包含在rh-php73-php-common中,它將作為依賴項自動安裝。
  • 使用。這需要一個額外的包,sclo-php73-php-sodium.

安裝完所有內容後,您會發現配置文件不在其通常的位置。這是因為 SCL 軟體包旨在允許與主軟體包並行安裝。

預設路徑SCL 路徑
/etc/httpd/opt/rh/httpd/root/etc/httpd
/etc/php.ini/etc/opt/rh/rh-php73/php.ini
/etc/php.d/etc/opt/rh/rh-php73/php.d
/var/log/httpd/var/log/httpd24

當您準備好啟動 HTTPd 時,該服務的名稱也不同:

systemctl --now enable httpd24-httpd.service

最後,關於版本號,請記住,幾乎所有來自 CentOS 7 的內容都直接源自 RHEL 7。即使版本號本身可能稍微過時,但更新版本的更新檔經常被向後移植到其中。這個想法是在保持 ABI 穩定性的同時仍然提供必要的錯誤和安全修復。

引用自:https://unix.stackexchange.com/questions/660372