我試圖從在Web瀏覽器的PHP文件運行以下命令執行任何動作:執行exec()命令不能從一個PHP頁面
exec('festival --tts /var/www/test.txt &');
不幸的是,沒有任何反應。我想嘗試'回聲',但沒有什麼可以返回來看看命令是否工作。我將test.txt的權限設置爲777.我還在shell中運行了該命令,並且它的工作方式很好 - 只是在PHP腳本提交時沒有。我究竟做錯了什麼?
我試圖從在Web瀏覽器的PHP文件運行以下命令執行任何動作:執行exec()命令不能從一個PHP頁面
exec('festival --tts /var/www/test.txt &');
不幸的是,沒有任何反應。我想嘗試'回聲',但沒有什麼可以返回來看看命令是否工作。我將test.txt的權限設置爲777.我還在shell中運行了該命令,並且它的工作方式很好 - 只是在PHP腳本提交時沒有。我究竟做錯了什麼?
提供的完整路徑festival
二進制文件,你可以用which festival
命令找到它的控制檯上,然後用它在你的exec調用,就像這樣:
exec('/usr/bin/festival --tts /var/www/test.txt &');
更新: 您需要以確保您創建文件的文件夾具有對運行php的用戶的寫入權限,該用戶通常是基於debian的發行版的www-data
。
如果我正確理解你想要做的事情,你沒有返回輸入。語法如下:
exec('command', $output);
其中$ output是腳本輸出將被存儲的變量。奇怪的是,這個輸出將作爲一個數組返回,所以當你完成時,如果你期望一個字符串,不要忘記implode()
。
對不起,我不確定你的意思。這個命令沒有輸出,只有音頻。 – Alligator
festival
程序是否打印任何輸出?如果是這樣,嘗試捕獲。同時檢查返回值。
exec('/usr/bin/festival --tts /var/www/test.txt &', $output, $return);
轉儲輸出數組,像這樣:
var_dump($output);
任何非零返回值通常表示錯誤:
echo $return;
不,「節日」命令是一個文本轉語音命令。只有音頻作爲輸出。不過,我嘗試了你寫的東西,這就是返回的內容:array(0){} 0 – Alligator
你確定它沒有做任何事情?至少在Ruby和Perl中,你也可以檢查進程退出值 - 也就是'$?'。 – Linuxios