[英]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.