2013-10-23 66 views
0

執行EXEC(test.sh)在我的PHP代碼:Ubuntu的不能在PHP

exec(test.sh); 

和test.sh具有代碼:

echo "Hi this is test?" | espeak --stdout > demo.wav 

但沒有發生。沒有錯誤,沒有輸出。

如果我嘗試從終端執行test.sh,它將完美工作。那麼爲什麼它不能在我的PHP上運行。

有人可以幫助我嗎?

+0

可能是幾件事情:你是從命令行還是使用apache執行php?如果您使用的是Apache,它是否擁有test.sh權限?你在使用的apache/webserver的error_log上看到任何錯誤嗎? – Naryl

+0

可能的重複:http://stackoverflow.com/questions/7397672/how-to-run-a-sh-file-from-php – aaron

+0

我從apache執行php。 test.sh已經有執行權。 error_log沒有錯誤。 – ishita

回答

0

你如何運行你的PHP腳本?用php-cli(在shell模式下)? HTTP(Apache,...)?

這可能是一個路徑問題。你能給我們你的test.sh的路徑,你的php腳本的路徑或者是如果你使用apache或其他HTTP服務器來調用運行PHP的URI嗎?

+0

我在http上運行php(Apache)。這不是一個路徑問題,如果我在test.sh中回顯「一些文本」,它會正常工作。但espeak無法從php文件創建demo.wav文件。請幫助我。 – ishita

+0

當您使用命令行運行shell腳本時,是否刪除輸出文件demo.wav?當前目錄的訪問權限是什麼? –

+0

雅我沒有刪除該文件。它從命令行工作。但是,從LAMP服務器它不會生成輸出。該目錄擁有777權限。 – ishita

0

apache用戶將需要對當前工作目錄(大概是包含您的php腳本和test.sh的同一目錄)的寫入權限。

+0

這兩個文件都有寫入權限。我認爲espeak命令有問題。我已經在我的Ubuntu和它的作品中有過應用程序。 – ishita