我正在將當前網站從Red Hat共享服務器移到Amazon AWS。當我移動我的工作代碼時,我開始在popen調用中收到錯誤。Ubuntu上的PHP AWS服務器:POPEN因「sh:<command>:not found」而失敗
的錯誤是:sh: 1: <command>: not found
我5年前發現了類似的問題,但從來就沒有真正的一個很好的答案。 popen fails with "sh: <command>: not found"
我在本地測試平臺的ubuntu 14.04筆記本電腦上使用XAMPP,並且問題不在那裏出現,但它在我的AWS實例上。在實例上使用ubuntu 14.04lts和php5和apache2。
我懷疑它可能是一個PHP設置或路徑問題,但我試過的一切都失敗了,有什麼建議嗎?
output = shell_exec('echo abc');
工作正常。
下面是更多的一些信息:我的代碼:
if (file_exists(SitePATH."/solver/dkcube")){
//echo "Executable is there <br />";
error_reporting(E_ALL);
$handle = popen("$runvariable 2>&1","r");
echo "Line 1: '$handle'; ".gettype($handle). "<br />";
$contents = stream_get_contents($handle);
echo "Line 2: $contents"; pclose($handle);
的runvariable基本上是從一些穿過變量file_exists的dkcube。 2號線的回聲
'線路2:SH:1:在/ var/www/html等/解算器/ dkcube:沒有發現'
希望給你一些更多的信息。
我試過sudo -H -u php_user sh -c 'content of runvariable here'
,並返回了同樣的錯誤:發現問題sh: 1: /var/www/html/solver/dkcube: not found
*「我什麼都試過失敗」 *什麼你究竟試過了嗎?它究竟如何失敗?例如''output = shell_exec('echo abc');'work? – jfs
如果你手工運行'sudo -H -u php_user sh -c'runvariable這裏的內容,會發生什麼? – jfs