我已经寻求帮助并尝试了这个线程上的所有内容,但仍然无法完成这项工作。我正在尝试使用 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');
任何人都可以对此有所了解吗?我错过了什么?谢谢。