2012-05-02 101 views
0

我有一個問題,通過運行在PHP腳本shell_exec腳本。Lame編碼命令在PHP shell_exec不能通過http服務器工作

而我的問題已經打破了這個腳本,並且注意到如果我通過終端中的php命令運行腳本,腳本就能正常工作,但如果我在瀏覽器中打開它,則不起作用。 爲了以防萬一,我將所有文件的權限設置爲777。

這裏的代碼

< ?php 

exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg'); 

的事情是,如果我在使用PHP命令終端運行該腳本工作,但通過瀏覽器不。

哦,這個scirpt需要最多兩秒鐘,所以它不會是一個超時或任何東西。我也沒有得到PHP或Nginx的錯誤。

我該如何解決這個問題?

+0

當通過nginx運行PHP時,'exec'可能被禁用。無法記住我的頭頂如何啓用它(並且通常它是一個安全漏洞,因此它應該被禁用)。至少應該給你的東西谷歌... – Endophage

+0

做的命令返回任何錯誤? – jarchuleta

+0

不,事情是,在最初的腳本中,我運行了幾個shell_exec命令,這似乎很好。這個腳本與這一個中止 –

回答

2

是PHP的執行PATH跛腳:您可以通過使用EXEC的第二個可選參數發現這一點?嘗試更換lame/usr/bin/lame或其他。

如何對文件參數的相對路徑名?如PHP所示,../furniture/等是否從當前目錄更正?如果有疑問,請用完整的路徑名替換它們,看看是否可以解決問題。

不太可能但值得一提:您可能想要檢查lame本身是否已設置其所有可執行位。如果你擁有這個文件,它只能由擁有者執行,Apache將無法運行它。

+0

使用/ usr/local/bin/lame工作。謝謝。 –

0

可能有很多原因,它不是從web服務器工作,也許是資源或權限相關。

<?php 
$output = ""; 
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg',$output); 
echo $output; 
?>