是的,这些代码在终端中运行 for i-6ren">
gpt4 book ai didi

php - shell_exec php中的语法错误

转载 作者:行者123 更新时间:2023-12-04 23:02:48 24 4
gpt4 key购买 nike

我很难过似乎一切都正确不知道为什么会出错

<?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

最佳答案

您有几个问题,但主要是您在字符串周围使用双引号,而在某些值周围使用双引号。还有$i的使用PHP 将尝试将其作为变量处理。

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 &');

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

更新:

不确定是否使用外壳来执行此操作,但您可以编写类似...
$fileList = glob("/var/www/vhosts/site.com/httpdocs/Videos/*.*");
foreach ( $fileList as $file ){
if ( is_file($file) ){
//echo shell_exec("echo \"$file\"");
echo shell_exec(escapeshellcmd("ffmpeg -i $file -c:v libx264 -crf 24 /var/www/vhosts/site.com/httpdocs/Videos/Output/$file.mp4 </dev/null >/dev/null 2>/var/log/ffmpeg.log"));
}
}

关于php - shell_exec php中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com