如何在已預裝 Apache HTTPD 的 CentOS 上安裝 PHP?
我正在使用 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
要安裝
php
,yum
也會安裝舊版本的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-mcrypt
7.3 的 SCL 版本,因此您可能需要找到一種方法來自行建構該版本。但是,它在 PHP 7.1 中被標記為已棄用,並將在 7.2 中從 PHP 核心中刪除,因此這可能是意料之中的。PHP 項目推薦以下替代方案:安裝完所有內容後,您會發現配置文件不在其通常的位置。這是因為 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 穩定性的同時仍然提供必要的錯誤和安全修復。