我有一个允许用户上传视频的网站,并且我安装了 ffmpeg 的 VPS 服务器,安全模式已关闭,并且在我的终端中测试了命令,但是当我尝试在 exec() 中运行命令时,它可以在 php 脚本中运行,甚至shell_exec() 它不执行。下面是我的代码(更改了一些隐私变量)。
$video_name = $_FILES["post_vid"]["name"];
$Vurl = "/folder1/folder2/$vrand_file_name/$video_name";
$VnewName = $vrand_vid_name .".mp4";
$VurlNew = "/folder1/folder2/$vrand_file_name/$VnewName";
$convertold = "/home/user/directory/domain.com/$Vurl";
$convertNew = "/home/user/directory/domain.com/$VurlNew" ;
$ffmpegC = "/user/local/bin/ffmpeg";
exec($ffmpegC.' -y -i "'.$convertold.'" -f mp4 "'.$convertNew.'"');
我在运行正常的 move_uploaded_file() 之后有代码。
还检查了,我的 php 使用与我的终端相同的用户...
对此的任何见解都会很棒,在此先感谢。
最佳答案
请在 exec
附近修复您的代码如下,你能试试吗?
$command = $ffmpegC.' -y -i "'.$convertold.'" -f mp4 "'.$convertNew.'" 2>&1';
exec($command, $array);
var_dump($array);
exit;
通过使用
2>&1
, stderror
输入到 $array
.所以你可以看到原因。
祝你好运!
关于php - exec(ffmpeg) 不在 php 中执行,但会在终端中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666824/