簡體   English   中英

無法通過PHP shell_exec運行sox命令

[英]Can't run sox commands via PHP shell_exec

我已經尋求幫助,並嘗試了該線程上的所有內容,但仍然無法使該工作正常。 我正在嘗試使用shell_exec()從我的PHP腳本中運行sox(Sound eXchange)命令行實用程序。 我需要連接兩個音頻文件,這兩個文件都與PHP腳本位於同一目錄中(即apache可以訪問)。

這是混亂:

  1. 某些sox命令可以使用shell_exec()正常工作。 例如,我可以播放音頻文件或檢索有關該文件的信息。
  2. 如果我回顯了連接命令(因此我確切知道PHP正在發送到外殼程序),然后將其復制並粘貼到外殼程序窗口中,則它將運行完美。
  3. 我的apache用戶(_www)對PHP腳本所在的目錄以及sox目錄具有完全權限。 我在兩個目錄上都運行了“ chown -R _www:_www”和“ chmod -R 777”。
  4. 我正在使用sox可執行文件和音頻文件的完整路徑。

因此,這在外殼中有效:

"/soxpath/sox /filepath/file1.wav /filepath/file2.wav /filepath/combined.wav"

但這在PHP中不起作用:

shell_exec('/soxpath/sox /filepath/file1.wav /filepath/file2.wav /filepath/combined.wav');

誰能對此有所啟發? 我想念什么? 謝謝。

好的,我終於使它工作了,所以我認為我應該消除我造成的任何混亂。 問題是無關緊要的。 因此,是的,您可以使用shell_exec()從PHP運行sox命令。

我只是遇到了javascript的計時問題。 我正在使用wami記錄器在客戶端捕獲音頻,然后將音頻文件保存在服務器上。 因此,我的PHP腳本處於ajax調用處理程序的上下文中,該處理程序根據定義是異步的。 應該早一點意識到。

問題是運行sox串聯命令時文件沒有保存完畢,因此自然失敗了,因為該文件尚不存在。 當我使呼叫同步時,它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM