2012-01-07 47 views
0

我正在構建一個將在我的機器上運行的PHP Web應用程序,其目的之一是使用exec()或類似的調用來調用HandBrakeCLI。如果我運行命令我可以使用HandBrake從本地Web應用程序獲取DVD嗎?

HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name 

從殼,它工作正常。但是,當我將完全相同的命令放在exec()php函數(或類似的函數)中時,它不起作用,並且除了返回0狀態外不會返回任何內容。沒有錯誤,沒有其他任何內容。

這只是一個簡單的權限問題,我沒有看到,由於沒有錯誤吐出來?還是我錯過了別的?

回答

1

對於調試,請嘗試從控制檯運行命令,但以PHP運行時的用戶身份運行。 Here是一些指針如何找出哪個用戶。使用sudo作爲Apache用戶運行該命令。您可能會從中獲得更多有用的信息。

+0

完美!這有幫助。原來的錯誤是沒有足夠的訪問DVD驅動器。我可以從那裏去。 – 2012-01-07 21:11:24

0

在PHP執行exec()時調用的shell的路徑中有手剎嗎?無論帳戶PHP/webserver運行在哪裏都可以訪問handbrak.exe所在的目錄,並且有權執行handbrake.exe?網絡服務器帳戶是否有權訪問DVD驅動器等...

許多事情要檢查,沒有更好的診斷信息,這是關於最好的你能夠到達這裏。

+0

這是一臺Ubuntu機器。從Ubuntu軟件中心安裝HandBrakeCLI以及PHP。我有點希望至少能指出我可以在哪裏找到阻止它運行的問題的日誌記錄。 – 2012-01-07 21:01:06

1

嘗試使用絕對路徑(類型which HandBrakeCLI在終端找到它),並追加2>&1到命令的末尾,就像給exec腳本:

exec('HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name 2>&1')

這樣,如果命令輸出什麼標準錯誤你會看到它。

相關問題