2015-10-16 60 views
1

我正在將當前網站從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

+0

*「我什麼都試過失敗」 *什麼你究竟試過了嗎?它究竟如何失敗?例如''output = shell_exec('echo abc');'work? – jfs

+0

如果你手工運行'sudo -H -u php_user sh -c'runvariable這裏的內容,會發生什麼? – jfs

回答

1

由於J.F塞巴斯蒂安的事實,他給了我,我需要解決我的問題的珍聞。使用他的sudo -H -u php_user sh -c 'content of runvariable here'問題,我確定這是一個ubuntu問題,而不是php問題。

我的問題的根本原因是我在64位操作系統上運行32位可執行文件,並沒有爲我的可執行文件安裝正確的庫。

首先,我不得不把SH從短跑改爲bash作爲概述這裏:source command not found in sh shell

然後我必須安裝正確的庫所概述的位置:https://unix.stackexchange.com/questions/75054/ldd-tells-me-my-app-is-not-a-dynamic-executable