簡體   English   中英

Ubuntu AWS Server上的PHP:POPEN失敗,並顯示“ sh: <command> : 未找到”

[英]PHP on Ubuntu AWS Server: POPEN fails with “sh: <command>: not found”

我將當前網站從Red Hat共享服務器移至Amazon AWS。 當我移動工作代碼時,我的popen調用開始出現錯誤。

錯誤是: sh: 1: <command>: not found

我在5年前發現了類似的問題,但從來沒有一個好的答案。 popen失敗,並顯示“ 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 / solver / dkcube:未找到”

希望能給您更多的信息。

我嘗試了sudo -H -u php_user sh -c 'content of runvariable here' ,它返回了相同的錯誤: sh: 1: /var/www/html/solver/dkcube: not found

感謝JF Sebastian的事實調查問題,他給了我解決我的問題所需的花絮。 使用他的sudo -H -u php_user sh -c 'content of runvariable here'問題,我確定這是一個ubuntu問題,而不是php問題。

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

首先,我必須將sh從破折號更改為bash,如下所示: sh shell中找不到源命令

然后,我必須按照此處所述安裝正確的庫: https : //unix.stackexchange.com/questions/75054/ldd-tells-me-my-app-is-not-a-dynamic-executable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM