【发布时间】:2012-03-21 22:33:20
【问题描述】:
我已经在this thread 上寻求帮助并尝试了所有方法,但仍然无法完成这项工作。我正在尝试使用 shell_exec() 从我的 PHP 脚本中运行 sox (Sound eXchange) 命令行实用程序。我需要连接两个音频文件,它们都与 PHP 脚本位于同一目录中(即 apache 可以访问)。
这是混乱:
- 某些 sox 命令使用 shell_exec() 可以正常工作。例如,我可以播放音频文件或检索有关它的信息。
- 如果我回显连接命令(因此我确切地知道 PHP 发送到 shell 的内容),然后将其复制并粘贴到 shell 窗口中,它会完美运行。
- 我的 apache 用户 (_www) 拥有 PHP 脚本所在目录以及 sox 目录的完全权限。我在两个目录上都运行了“chown -R _www:_www”和“chmod -R 777”。
- 我使用的是 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