2011-09-22 95 views
0

我遇到了使用PHP函數shell_exec()的問題。PHP shell_exec()問題

我有一個應用程序,我可以從linux命令行運行得很好。該應用程序需要幾個小時才能運行,所以我試圖用shell_exec()產生一個新實例來更好地管理。但是,當我通過shell_exec()運行完全相同的命令(它可以在命令行上運行)時,它會返回一個空字符串,而且看起來沒有任何新進程已啓動。再加上它幾乎立即完成。 shell_exec()是否等待直到命令完成正確?

我也嘗試過exec()的變體,結果相同。

有沒有人知道這裏會發生什麼?

命令中沒有符號鏈接或任何有趣的東西:只是應用程序的路徑和一些命令行參數。

+0

請問PHP \ Apache的發售者有權限來運行應用程序? – 2011-09-22 20:28:47

+0

你可以使用'shell_exec()'/'exec()'等運行任何其他命令嗎?試試'echo exec('whoami');' – Dor

+0

@Dagon:我該如何檢查? – Brett

回答

0

有些事情與你env

請參閱從cli(命令行界面)和php腳本
env產量也看看你的shell解釋?

腳本和cli應用程序是否從一個用戶運行?
如果是這樣,SE選項safe_mode

0

確保用戶Apache是​​在(可能是www數據)運行具有對文件的訪問,他們是可執行文件(ls -la)。一個簡單的chmod 777 [filename]會解決這個問題。

默認情況下,PHP將在30秒後超時。您可以禁用這樣的限制:

<?php 
set_time_limit(0); 
?> 

編輯:

也可以這樣考慮:http://www.rabbitmq.com/

+0

用戶看起來是wwwrun。但是應用程序權限是-rwxrwxrwx,所以它看起來好像用戶應該不重要。儘管如此? – Brett

+0

只是這是愚蠢的,你應該真的考慮其他方法。你可以發佈你正在運行的腳本和應該運行它們的php代碼嗎?也許告訴我們更多關於它的事情? – demux