2009-07-30 61 views
3

我有,我需要執行一個shell腳本「add_article.sh」讀取參數文件,並將新聞文章內容搜索索引(狐猴/大狐猴PHP腳本)。EXEC()無法正常運行在PHP

執行它自己的「add_article.sh」腳本(從殼)的作品完美,但是從PHP腳本中運行它,我得到這個:

$blah = exec("./add_article.sh", $out, $ret_val); 

echo $out . "<BR />"; 
echo $ret_val . "<BR />"; 

這將產生

陣列

這是在正確的目錄,甚至絕對路徑失敗。我在同一個目錄中執行另一個腳本的另一個函數中使用完全相同的格式,並且都很好。

任何想法?

+1

這有什麼錯呢? – RaYell 2009-07-30 12:43:34

+0

如果我運行從它輸出5個或6行文本的外殼腳本,通過EXEC我什麼也沒得到,還,返回/退出值是255,任何人都知道這意味着什麼? – gouwsmeister 2009-07-30 13:00:33

+0

這很可能意味着腳本試圖執行`exit -1`或類似的操作。如果您在腳本中看到發生此事的地方,這可能會很有用。 – chaos 2009-07-30 13:22:17

回答

1

你檢查你的shell腳本執行權限? Apache在大多數操作系統中以很少權限的用戶身份運行,因此可能是原因。

1

$out應該是一個數組。您可能應該使用print_r()var_dump()來查看腳本返回的內容;它可能會告訴你發生了什麼問題。

一般情況下,有可能是一些當PHP運行腳本未得到滿足的環境依賴性。如果它是從Apache內部運行的,這是特別常見的。

1

嘗試:

$blah = exec("./add_article.sh", $out, $ret_val); 

print_r($out); 
echo '<br />'; 
echo $ret_val . "<br />";