【问题标题】:Can't run sox commands via PHP shell_exec无法通过 PHP shell_exec 运行 sox 命令
【发布时间】:2012-03-21 22:33:20
【问题描述】:

我已经在this thread 上寻求帮助并尝试了所有方法,但仍然无法完成这项工作。我正在尝试使用 shell_exec() 从我的 PHP 脚本中运行 sox (Sound eXchange) 命令行实用程序。我需要连接两个音频文件,它们都与 PHP 脚本位于同一目录中(即 apache 可以访问)。

这是混乱:

  1. 某些 sox 命令使用 shell_exec() 可以正常工作。例如,我可以播放音频文件或检索有关它的信息。
  2. 如果我回显连接命令(因此我确切地知道 PHP 发送到 shell 的内容),然后将其复制并粘贴到 shell 窗口中,它会完美运行。
  3. 我的 apache 用户 (_www) 拥有 PHP 脚本所在目录以及 sox 目录的完全权限。我在两个目录上都运行了“chown -R _www:_www”和“chmod -R 777”。
  4. 我使用的是 sox 可执行文件和音频文件的完整路径。

所以这在 shell 中有效:

"/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() 返回什么?
  • /soxpath/sox ????是完整路径还是示例....
  • shell_exec() 返回 NULL。而“/soxpath/”只是实际完整路径的占位符。就我而言,它是“/bin/sox-14.4.0/”
  • 怎么样:shell_exec('/soxpath/sox /filepath/file1.wav /filepath/file2.wav /filepath/combined.wav >file.txt'); file.txt 中出现了什么?
  • 创建file.txt,但它是一个空文件(大小为0字节),shell_exec()仍然返回NULL。

标签: php sox command-line-tool


【解决方案1】:

好的,我终于让它工作了,所以我想我应该澄清一下我造成的任何混乱。问题是无关的。所以,是的,您可以使用 shell_exec() 从 PHP 运行 sox 命令。

我只是遇到了 javascript 的时间问题。我使用wami recorder 在客户端捕获音频,然后将音频文件保存在服务器上。所以我的 PHP 脚本在 ajax 调用处理程序的上下文中,根据定义,它是异步的。早该意识到这一点。

问题是在运行连接 sox 命令时文件没有完成保存,所以自然而然地失败了,因为文件还不存在。当我进行同步调用时,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2016-03-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多