Linux

從腳本呼叫時使用了錯誤版本的 PHP

  • July 6, 2012

如果這個問題真的很基本,我提前道歉。我的背景是 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 書籍。

引用自:https://serverfault.com/questions/405465