Win10下PHP shell_exec/exec执行ffmpeg合并命令失效,手动CMD正常
PHP调用FFmpeg合并音视频异常问题
复现代码
$MergeCommand = "C:\\Users\\Admin\\Documents\\ffmpeg-2021-02-20-git-51a9f487ae-full_build\\bin\\ffmpeg -i \"" . $path . $videoname . "\" -i \"" . $path . $audioname . "\" -c:v copy -c:a aac \"" . $path . $filename . "FINAL.mp4\""; shell_exec($MergeCommand); echo($MergeCommand);
运行环境
- 操作系统:Windows 10
问题排查过程
- 初始说明:提问者表示最初提供的命令行内容过于冗长,已完成精简
- 执行流程验证:经测试,程序已正常运行到
shell_exec($MergeCommand);行,后续可以正确输出$MergeCommand的内容 - 核心故障表现:执行
$MergeCommand对应的ffmpeg命令时无任何响应,直接跳转到下一行代码,未完成预期的视频与音频文件合并操作 - 输出与报错情况:该命令执行全程无任何输出,已尝试echo打印
shell_exec的返回结果,无内容返回,也没有任何报错信息 - 返回值测试:换用
exec($MergeCommand, $output, $retvalue);调试,得到的返回值为1 - 对照测试结果:将程序echo输出的完整命令复制到CMD窗口手动运行,操作完全符合预期效果
- 基础功能验证:
shell_exec并非完全失效,仅在执行该ffmpeg命令时出现问题,例如执行shell_exec("echo hello world");可以正常运行
核心疑问
为什么同一命令在普通CMD中可以正常运行,通过PHP的
shell_exec()或exec()调用却无法执行?
内容的提问来源于stack exchange,提问作者hydra-lua
相关产品推荐
相关产品推荐

