看起來Apache2無法啟動

看起來Apache2無法啟動

抱歉,我對系統管理方面很陌生,對Linux 也很陌生(大菜鳥),所以我向你們尋求幫助,因為我不知道是什麼原因造成的(正如我已經說過的,我對Linux 很陌生) 。我在嘗試安裝 GUI 時不小心刪除了(幸運的是我...)taskel 的東西,然後重新安裝了其中一些(至少是我記得的那些)。我現在的情況是 apache2 無法啟動:

無法啟動

/etc/apache2/apache2.conf 第 146 行的語法錯誤看起來像

這

/etc/apache2/mods-enabled/php7.1.load 中的第三個錯誤看起來像

這 事實上,/usr/lib/apache2/modules/ 中沒有“libphp7.1”這樣的文件,只有“libphp8.1”(很抱歉這裡有新的螢幕截圖)有人可以告訴我我現在應該做什麼嗎?將設定檔從 7.1 更改為 8.1 還是只安裝 7.1?

答案1

最有可能的是你的php 版本在你的系統中發生了變化(適用於Debian/Ubuntu 及其衍生版本,在其他發行版中某些路徑可能會有所不同),但在你的Apache 配置中沒有改變,運行:

php -v 

透過執行以下命令來驗證正在載入的版本:

ls -l /etc/apache2/mods-enabled/php*

那如果你的版本與 Apache 載入的版本不同,假設結果是

lrwxrwxrwx 1 root root 29 ago 17 12:19 php7.4.conf -> ../mods-available/php7.4.conf
lrwxrwxrwx 1 root root 29 ago 17 12:19 php7.4.load -> ../mods-available/php7.4.load

您的新版本現在是 8.1,請檢查哪些模組可用於運行:

ls -l /etc/apache2/mods-available/

-rw-r--r-- 1 root root  855 jun 13 08:43 php7.4.conf
-rw-r--r-- 1 root root  102 jun 13 08:43 php7.4.load
-rw-r--r-- 1 root root  855 ago 15 07:24 php8.1.conf
-rw-r--r-- 1 root root  101 ago 15 07:24 php8.1.load

在清單中出現舊的(不起作用)和新的 php8.1,執行以下命令來建立指向這些新版本模組的新符號鏈接

sudo ln -s /etc/apache2/mods-available/php8.1.conf  /etc/apache2/mods-enabled/php8.1.conf
sudo ln -s /etc/apache2/mods-available/php8.1.load  /etc/apache2/mods-enabled/php8.1.load

刪除舊的符號鏈接

sudo rm /etc/apache2/mods-enabled/php7.4.*

並重新啟動阿帕契

sudo service apache2 restart

答案2

libphp-7.1.so要么在您的系統上丟失,要么位於未以 Apache 可以找到的方式配置的位置。可能它在升級某些東西時被刪除,但很難說。

您會發現在 Linux 伺服器上維護 PHP 很混亂。尤其是像Ubuntu LTS(可能是也可能不是你的發行版,這只是我的觀點)這樣的東西,你可以獲得LTS 的穩定性,但隨後就會陷入困境,迫使你落後於其他發行版的新版本數月甚至數年。下面是我在 Ubuntu 上的處理方法。如果您運行 Redhat、Slack、SuSE 或 Yggdrasil Linux,這不會有太大幫助。

您不可能只安裝較新版本的 PHP,而不會在某些時候遇到作業系統軟體的相依性問題。有時,這些依賴項可能會與 MySQL/MariaDB 功能相衝突,最終可能會導致超級糾結的紅色藥丸類型問題。正如上面一個人評論的那樣,有時與標準作業系統捆綁在一起的PHP 版本已經過時,使用起來不合理(對於低於PHP 8.0 的任何版本來說絕對是這種情況,對於7.4 來說當然是粗略的,截至3/29 /22)。對於新管理員來說也很困惑,因為“為什麼你的作業系統會提供如此過時的軟體?”, 正確的? Ubuntu 顯然確實將安全問題向後移植到 LTS 版本,但需要大量的挖掘才能解決核實給定的 CVE 實際上在 LTS 套件中進行了修補。有時,修復程式可用並已在給定軟體包的 tarball/git 儲存庫中實現,但補丁/向後移植仍在等待 Ubuntu 維護者將其實際滾動到 deb 軟體包中,以便您可以安裝它。從安全角度來看,在沒有儲存庫的情況下進行帶外安裝軟體是危險的,因為這樣您就需要依靠手動程序來記住升級 OOB 軟體包,而它永遠不會真正發揮作用。管理員離開,人們忘記。

幸運的是,來自捷克共和國的 Debian 維護者 Ondřej Surý(實際上更像是巫師)親自發布了一個儲存庫,其中包括在 Debian/Ubuntu 系統上升級 PHP 的所有基礎知識。你可以配置這奇妙的回購協議升級 PHP 並且仍然可以維護它。作為獎勵,您可以升級NginX阿帕契也透過他的儲存庫,因為一些較新的 PHP 功能需要對這些套件進行更改。您可能可以在上面的連結之一找到一些更好的說明,但是有一些網站可以引導你完成它以及任何需要的 Nginx 或 Apache 堆疊變更。

需要注意的是,在安裝 Ondřej Surý 儲存庫之前,請先取得以下列表全部目前安裝的 PHP/NginX/Apache 軟體包(例如:(dpkg -l | egrep -i '(apache|nginx|php)'或一些類似的咒語apt aptitude apt-get)。這些軟體包的名稱有時會發生變化,並且依賴項有時會帶來 PHP 軟體包版本的混合。例如,有些發生的事情mbstring打包幾個 PHP 版本之前。它需要一些人工幹預

當然,有時可以透過作業系統升級來避免所有這些(例如:「Crazy Camel」->「Damaged Dingo」),但即便如此,最新的LTS 版本可能會缺少某些3rd 方堆疊所需的前沿功能,而您我們仍然在同一條船上。

不管怎樣,祝你好運,並且在做任何事情之前不要忘記為你的虛擬機器創建快照!

相關內容