2012-10-19 250 views
3

我正在寫一個PHP腳本來上傳一個文件,通過使用系統調用fork()exec()execl()執行其他c文件。 不幸的是,execl()函數不起作用。
在更多的細節,PHP腳本,執行exec()功能:PHP腳本執行exec

$output =shell_exec('./app/p1'; 
echo "<pre>$output</pre>";) 

執行P1是p1.c的可執行文件,並p1.c程序調用EXECL()爲:

execl("./p2", "./p2", "a.param","test.txt", NULL); 

執行p2,它是p2.c的可執行文件。因爲p1.c中的execl()沒有被執行,並且p2.c沒有被執行。 任何建議。

+0

是否執行p1?因此其他命令在p1中工作嗎? – pgampe

+0

如果PHP在'safe_mode'(http://www.php.net/manual/en/function.shell-exec.php)中運行,'shell_exec()'id被禁用。你確定你的PHP引擎禁用了'safe_mode'嗎? –

回答

0

shell_exec documentation所述,只有在配置中禁用safe_mode時才能啓用此功能。

要禁用它,(僅適用於PHP prior to 5.4),您必須在php.ini以下行:

safe_mode = Off 

另一個可能的問題可能來自當前路徑。您使用相對路徑(./app/p1./p2)調用二元組。你確定這些二進制文件在當前的工作目錄嗎?

爲了擺脫這個問題,只需在兩種情況下使用文件的完整路徑。