2010-06-28 30 views
1

我有一個程序在做一些後臺處理之後會返回逗號分隔的數字串。我打算在symfony中使用shell_exec執行此操作;然後,我得到的是NULL(通過var_dump()顯示,我嘗試了以下調試步驟:在symfony中運行shell_exec()

我在Symfony中通過命令行石灰單元測試運行該文件(它是一個PHP類) - 它工作並給出

只是爲了檢查,我在同一個地方試了一個簡單的命令ls -l,看看我是否會得到任何東西,同樣的問題 - 瀏覽器中的var_dump顯示NULL,但它工作

可能是什麼問題?在瀏覽器中運行shell_exec()有什麼限制嗎?

編輯:只是爲了澄清,shell_exec()命令工作時,我作爲獨立的PHP腳本在Web服務器上運行它們(例如,通過將它們放在我的文檔根。出於某種原因,他們似乎並沒有在symfony框架下工作。

回答

3

我終於解決了它,結果竟然是相當簡單的東西,而且毫不相關。

我運行的shell命令的格式如下:face_query -D args。我沒有意識到Apache會以用戶www-data執行PHP,因此程序face_query將不在PATH中(該目錄實際上是~/bin)。將程序名稱改爲程序的完整路徑解決了它。

我也從中得到,只有www-data有權執行的命令才能運行。在這種情況下,www-data與我的用戶位於同一組中,但否則可能會出現問題。

+0

夢幻般的答案 – 2011-09-02 09:43:56

0

你試過用exec嗎?或者其他變體之一。我永遠不知道應該使用哪一個,並總是與exec執行結合。

http://uk.php.net/manual/en/function.exec.php

+0

否;我嘗試使用exec(),system()和反引號操作符,但仍然沒有。 – 2010-06-28 15:58:13

0

是Web服務器運行在安全模式下的PHP?

注意:當PHP在安全模式下運行時,此功能被禁用。 來自:http://php.net/manual/en/function.shell-exec.php

+0

不;我做了phpinfo()的檢查,並且safe_mode是關閉的。 – 2010-06-28 15:56:30

+0

這是你的服務器還是共享主機?他們可能已經在web服務器的php.ini中禁用了shell_exec。 – 2010-06-28 15:58:28

+0

不,它是我自己的Ubuntu服務器。當我通過瀏覽器將它們作爲文檔根中的獨立PHP文件運行時,shell_exec()命令會執行*工作。 – 2010-06-28 16:07:42

相關問題