shell_exec php中的语法错误

时间:2018-03-31 17:26:00

标签: php ffmpeg

我难倒似乎一切都是对的,不知道为什么会出错

<?php
    echo "Starting ffmpeg...\n\n";
    echo shell_exec("ffmpeg -i /var/www/vhosts/site.com/httpdocs/Videos/*.* -i "$i" -c:v libx264 -crf 24  /var/www/vhosts/site.com/httpdocs/Videos/Output/"${i%.*}.mp4 </dev/null >/dev/null 2>/var/log/ffmpeg.log &");
    echo "Done.\n";
?>

是的,这些代码在终端

中运行
for i in *.*; do ffmpeg -i "$i" -c:v libx264 -crf 24 n/"${i%.*}.mp4"; done

1 个答案:

答案 0 :(得分:0)

你有几个问题,但主要的是你使用双引号围绕字符串和双引号围绕一些值。还有+ .rdio-inline的使用,PHP将尝试将其作为变量进行处理。

$i

在整个字符串周围使用单引号既可以解决字符串中的引号问题,也可以阻止PHP尝试解释任何字段。

<强>更新

不确定使用shell来执行此操作,但您可以编写类似......

的内容
echo shell_exec('ffmpeg -i /var/www/vhosts/site.com/httpdocs/Videos/*.* -i "$i" -c:v libx264 -crf 24  /var/www/vhosts/site.com/httpdocs/Videos/Output/"${i%.*}.mp4 </dev/null >/dev/null 2>/var/log/ffmpeg.log &');