PHP exec未执行命令

PHP exec未执行命令,php,exec,Php,Exec,我使用php的exec执行FFmpeg命令,但在浏览器中打开它时,它并没有工作。但当我在终端上运行这个php文件脚本时,它工作得很好,我的php安全模式也关闭了。请帮我解决这个问题。我的php代码是 <?php $output=exec("ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out); echo $out; ec

我使用php的exec执行FFmpeg命令,但在浏览器中打开它时,它并没有工作。但当我在终端上运行这个php文件脚本时,它工作得很好,我的php安全模式也关闭了。请帮我解决这个问题。我的php代码是

<?php
$output=exec("ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out);
echo $out;
echo $output;
?>

尝试给出ffmpeg应用程序所在的完整路径

e、 g

因此,您的函数可能如下所示:

$output=exec("/usr/bin/ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out);

您必须检查“ffmpeg”的位置。请注意,如果您在windows上,则必须使用逗号。即:

$output=exec('"/usr/bin/ffmpeg" -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi', $out);

我遇到了这个问题,结果证明这是Apache对公共目录的权限

注意:我正在AWS上运行Ubuntu 14

安装FFmpeg后,我不得不将
/var/www/*
所有权更改为
www-data

sudo chown -R www-data:root /var/www
(www-data是这里的重要部分)

然后我运行了下面的代码,当我通过URL(Apache)访问它时,它就可以工作了

/opt/ffmpeg/bin/ffmpeg
是运行我的ffmpeg的地方。你的可能是
/usr/bin/ffmpeg
或其他东西。您可以通过在命令行中键入
locate ffmpeg
并查看它提供的列表来找到它

输入文件是公用的.mp4文件,而输出的.mp4文件将位于同一位置

在命令行中运行此命令:
php test.php
-works
从您的浏览器运行此命令:yourwebsite.com/test.php-works

就像他在回答中提到的@Arfeen一样,您应该使用ffmpeg路径执行命令,但是,回答中的给定路径“/usr/bin/ffmpeg”并不总是相同的

首先使用以下命令定位ffmpeg:

which ffmpeg
我的情况是:

/usr/local/bin/ffmpeg


然后返回php代码,将命令中的“ffmpeg”替换为ffmpeg的路径(在我的例子中是/usr/local/bin/ffmpeg)。

我的第一个猜测是存在权限问题。你能把你的代码放在这里吗?通过execYep执行命令的输出,exec命令的问题几乎总是权限问题。@rakeshjain我已经包含了我的php代码,我试图获得输出,但没有给出任何结果。检查我的代码我已经编辑过了。你在$out数组中没有得到任何东西吗?没有,它只是打印“数组”什么都没有else@Alifaizan因为我给你的只是一个例子,所以你是否设置了正确的路径。
su www data
或任何你的apache用户,并尝试从ssh运行ffmpeg,这可能是一个权限问题。老兄,你帮我省了很多麻烦:D在Ubuntu 18.04上对我有效。我尝试了不同的选择,但在这之前没有任何效果。
// test.php

$run = system("/opt/ffmpeg/bin/ffmpeg -i /var/www/html/input.mp4 -vf scale=640:480 /var/www/html/output.mp4 &");

if($run) {
    echo "success";
} else {
    echo "failed";
}
which ffmpeg