寶塔網站換了PHP版本,命令列為何沒變:分開核執行環境

在寶塔把網站切到新的PHP版本,終端執行php -v卻仍顯示舊版本,不一定是切換失敗。網站請求與命令列可以使用不同PHP入口;先分開核對兩者,才不會為了一個命令輸出,改動原本正常的網站環境。

以下依寶塔和PHP官方文件說明檢查順序。文中的命令與短程式是供你核對現場的示例,沒有預設你的安裝路徑、版本或輸出。先記錄網站與命令列各自的入口,再決定是否需要調整。

寶塔站點切換的是該網站的PHP環境

寶塔官方PHP頁說明,可以修改當前站點指定的PHP運行版本,適合已安裝多個版本的環境,也支援自訂PHP連線配置與純靜態站點。它描述的是選定網站的服務設定,不是所有終端命令都一起切換的承諾。

先確認你選中的是需要修改的站點,而不是同一台伺服器上的另一個域名。記下原版本與目標版本,並查程式的版本要求;不要只因新版本可選,就讓舊程式直接承擔相容性變更。

如果網站設為純靜態,就不應把靜態HTML成功打開當成PHP已執行。核對網站真正使用的入口與請求類型,確認你測的是PHP程式,而不是由Web伺服器直接提供的檔案。

php -v回答的是這次命令呼叫的程式

PHP官方命令列文件將CLI與其他SAPI分開,並說明可用php -v查看呼叫的PHP資訊。這個結果對命令列有用,但它沒有替瀏覽器請求讀取寶塔目標站點的設定。

php -v
php --ini

這兩個命令分別核對目前呼叫的PHP及配置資訊。不要把示例命令下面想像出的版本當成結果;保存你自己的完整輸出和執行時間,並確認當時使用哪個終端、帳號與工作環境。

若有多個PHP可執行檔,應依現場安裝資料找出正確路徑,再用明確路徑核對。不要直接複製別人的寶塔版本目錄,也不要先修改全域連結,讓同一台機器上的其他命令或任務一起受影響。

比較Web與CLI時,先看版本和SAPI

PHP提供PHP_VERSION與php_sapi_name()等資訊,讓你辨認目前程式由哪個環境執行。需要比較兩個入口時,可以在受控、短暫的診斷方式中記錄版本與SAPI;不要把完整環境報告長期放在公開網站。

<?php
echo PHP_VERSION, "\n";
echo php_sapi_name(), "\n";

CLI與網站入口得到不同SAPI是合理現象,不能只因字串不同就認定故障。重點是它們的版本、配置與擴充功能,是否各自符合負責的工作。短程式也只讀當次執行環境,不替所有站點提供統一結論。

若你必須透過網站診斷,限制存取範圍,核對完成立即移除。完整phpinfo會展示大量配置及環境資訊,官方文件描述其輸出範圍;排查單一版本差異時,不需要把整份內容公開給所有訪客。

版本相同,也可能讀取不同配置

PHP官方配置文件說明,配置檔的查找位置與執行方式等條件有關,並可能有SAPI專用設定。這解釋了為什麼兩邊版本相同,記憶體限制、擴充功能或其他行為仍可能不同。

核對各自真正載入的配置檔及額外掃描資訊,而不是只找到磁碟上某個php.ini,就認定網站與CLI都在用它。配置檔存在,和這次執行載入它,是兩項不同事實。

如果只在CLI出現缺少擴充功能的錯誤,先查CLI配置;如果只在網站出現,則查站點PHP服務。不要把一邊的錯誤當成另一邊也需要相同修改,或者將所有版本的配置互相覆蓋。

網站能開,不代表命令列任務也相容

網站之外,部署命令、排程與背景工作可能另外呼叫PHP。它們使用的入口應獨立記錄。網站切換版本後,如果某個任務出錯,先核對那個任務實際執行的程式,不要立即把網站切回去。

同樣,手動終端命令成功也不代表排程必定使用相同環境。任務可能記錄明確路徑,也可能依它自己的環境尋找命令。檢查任務設定和執行紀錄,才知道它與剛才的手動測試是否可比較。

若需要統一版本,先列出網站、部署及任務各自的入口,確認相容要求,再安排範圍明確的變更。不要把全域PHP切換當成方便的捷徑,卻沒有盤點其他網站與既有任務。

錯誤訊息要和入口一起保存

看到缺少函式、擴充功能或版本不符時,保存完整錯誤、執行方式及相關PHP資訊。只貼一句「PHP不對」會讓維護者不知道問題來自瀏覽器、CLI還是排程,容易在錯誤的位置調整設定。

也把成功的對照結果記下來。例如網站請求成功而CLI失敗,代表你已有兩個不同入口可比較;先查它們的差異,比同時重裝所有PHP版本更能縮小問題範圍。

若診斷涉及密碼、環境變數或路徑,交接時只提供必要資訊,敏感內容另按既有方式保護。版本和配置核對不需要公開整份網站設定,更不需要把連線密碼放進文章留言或錯誤截圖。

一次只改能說清楚影響的入口

假如問題只出現在某個部署命令,就先讓那個命令使用符合程式要求的PHP入口,並核對結果。這不等於一定要修改整台主機的預設命令,也不等於所有網站都必須立即換版本。把處理範圍寫清楚,才能安排合理的回復方式。

需要修改配置時,同樣保存原值和實際載入位置,再依服務與設定的要求處理生效方式。不要因為編輯了某個檔案,就直接宣稱網站已讀取新值;以對應入口重新核對,並保存當時觀察,才知道變更是否到達需要的環境。

完成後保留一份入口清單

把目標網站PHP版本、CLI可執行檔路徑、各自載入的配置,以及重要任務的PHP入口放在同一份維護紀錄。之後再切換版本,就能逐項核對,不會只看一張面板截圖推斷所有工作都已更新。

最後用真正需要的網站請求與任務功能驗收,而不是只看版本號。版本符合只是執行條件之一;程式依賴、配置與實際功能也需要核對,才知道這次調整是否完成了原本要解決的問題。

參考資料

原文鏈接:https://wntheme.com/bt-site-php-version-versus-cli/,轉載請註明出處。
0

評論0

顯示驗證碼
沒有帳號?註冊  忘記密碼?