Linux
從腳本呼叫時使用了錯誤版本的 PHP
如果這個問題真的很基本,我提前道歉。我的背景是 Windows,我被要求維護一個狀況不佳且正在生產使用的 RedHat Linux 伺服器。
問題是當從 Apache 中的腳本與命令行執行時,PHP 的版本不同。
例如:
從命令行:
從網頁(Apache):
從網頁呼叫的 php 腳本中:
該腳本由此 php 程式碼和函式呼叫:
$exec_result = sku_exec(CLIMPORT.FILE_NAV, '', $_POST['nav_skus']); function sku_exec($file_path, $call, $args) { $exe = $file_path.' '; if($call != '' && isset($call) && $call) $exe .= $call.' '; $exe .= $args; // echo $exe.'<hr />'; exec('php '.$exe, $return_data); return $return_data; }
我需要將腳本降級為使用 5.2.9 而不是 5.4.1。
我什至從哪裡開始尋找這是如何配置的?為什麼 Apache 使用的 PHP 版本與它從腳本呼叫的版本不同?
我查看了 Apache 的配置文件,但沒有看到任何突如其來的東西。
有什麼建議麼?
不幸的是,目前還不能將伺服器升級到最新的 PHP。計劃是建構一個新伺服器並遷移到它。
從 CLI執行
which php
並將路徑添加到腳本,以便您正在執行exec('/path/to/the/cli/php
。如果您的使用者被限制為無法執行哪個(那會被嚴重搞砸):執行命令行的使用者具有不同的環境,因此PATH
與使用者所擁有的環境不同。PATH
如果我沒記錯的話,這個變數雖然是很久以前的事了,但它甚至存在於 DOS 中。因此,取 PATH(echo $PATH
) 中的值並手動檢查哪個目錄包含一個名為php
. 反正就是which
這樣。如果這是你現在的工作,那麼你非常需要閱讀一些基本的 Linux 書籍。