繁体   English   中英

PHP:shell_exec(); 与 cmd 的工作方式不同? [WIN10命令行]

[英]PHP: shell_exec(); not working identical to cmd? [WIN10 CMD]

$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,什么也没有发生。 似乎正在发生
进入下一行。 应该发生的是,它将视频文件与音频文件合并。
没有 output (尝试回显它的结果),也没有任何错误消息。
当使用exec($MergeCommand, $output, $retvalue); 要找出返回值,它返回 1。
但是,如果我复制echo($MergeCommand);的确切行打印出来,打开 cmd,粘贴
它在那里并运行它,它正是它应该做的。

现在我想知道,为什么相同的命令在常规的 cmd 中起作用,而在运行时却不起作用
它通过shell_exec(); exec(); ???
它不像shell_exec(); 根本不起作用,我得出的结论是它特别
运行该命令时发生。 例如, shell_exec("echo hello world"); 作品
完全没问题。

似乎缺少ffmpeg文件扩展名。 请试试

$MergeCommand = "C:\\Users\\Admin\\Documents\\ffmpeg-2021-02-20-git-51a9f487ae-full_build\\bin\\ffmpeg.exe -i \"" . $path . $videoname . "\" -i \"" . $path . $audioname . "\" -c:v copy -c:a aac \"" . $path . $filename . "FINAL.mp4\"";
shell_exec($MergeCommand);
echo($MergeCommand);

好的,我自己修好了!
我实际上不知道这是如何解决的,但确实如此。
我交换了第一个shell_exec($strCmd); (命令我
在 $MergeCommand 之前运行):

$output = null;
exec($strCmd, $output);
$output = implode(" ", $output);

现在它工作得很好。 好像是第一个shell_exec
成功执行命令,阻止任何其他 cmd 执行
然后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM