PHP exec()不使用ffmpeg

PHP exec()不使用ffmpeg,php,ffmpeg,exec,Php,Ffmpeg,Exec,我正在尝试用PHP(在Ubuntu上)运行以下命令: 您正在使用文件名的相对路径。您确定正在正确的目录中执行该命令吗?apache/web用户能否访问/home/johnboy/ffmpeg/ffmpeg?也就是说,也许/home/johnboy是0700而不是0755 也许有资源限制会影响如此大的程序及其所有库的加载 如果将脚本运行到php cli sapi,它的行为是否正确?即使以apache用户身份运行 当apache web用户通过php cli运行php脚本时,strace-ff显示了

我正在尝试用PHP(在Ubuntu上)运行以下命令:


您正在使用文件名的相对路径。您确定正在正确的目录中执行该命令吗?

apache/web用户能否访问
/home/johnboy/ffmpeg/ffmpeg
?也就是说,也许
/home/johnboy
是0700而不是0755

也许有资源限制会影响如此大的程序及其所有库的加载

如果将脚本运行到php cli sapi,它的行为是否正确?即使以apache用户身份运行

当apache web用户通过php cli运行php脚本时,
strace-ff
显示了什么?

函数exec()只返回输出的最后一行,我怀疑该命令的最后一行是空的。如果需要命令的全部内容,应使用shell_exec()


还要跟踪命令执行的位置,请尝试:
print(shell_exec(“pwd”)

如果您希望以这种方式执行某些操作,则会出现一些问题。
1.可能您有一些权限问题,Web服务器对处理系统的某些执行有限制。
2.可能您的路径文件不正确。
3.您可以尝试使用shell_exec对系统执行该操作。

无论如何,我要做的是让我的死刑顺利执行, 我将编写两个程序,其中包含消息传递,例如客户机-服务器程序。 服务器将等待来自客户端的一些消息来执行某个命令(所有命令,都不会有权限问题)。在web中,您只需调用客户端应用程序即可。

我强调的是从web和系统构建一些接口。它将解决许多许可问题


希望对您有所帮助。

获取标准会给出结果

试一试


启用安全模式,它将工作

使用此选项

$ffmpeg = "ffmpeg Installed path";
$flvfile = "source video file with root path";
$png_path " "Destination video file with root path and file type";


exec("$ffmpeg -y -i $flvfile -vframes 1 -ss 00:01:60 
     -an -vcodec png -f rawvideo -s 110x90 $png_path");
$output=shell_exec('/home/person/www/ffmpeg 2>&1');
回显“$output”;

注意2>&1部分…

Yes,因为在shell中,我将cd发送到/var/www(php文件的位置)并在那里执行命令。因此,它成功地在director/var/www/中创建了最终的_video.mov,感谢您的回复。我确定ffmpeg和johnboy是755的chmod吗。另外,我从shell运行了php test.php命令,它运行得很好。所以我知道剧本很管用。它只是无法从web浏览器运行。我不确定strace-ff是什么,或者我需要在哪里运行它?@Dodinas:您可以编写strace-ff php file.php>log.txt 2>&1并将该日志上传到某个地方(仔细查看之后),另外,如果从apache运行时php处于安全模式,脚本可能不会运行;检查您的apache错误日志。@Dodinas:apache是否具有对/var/www目录的写访问权限?我已经找到了。显然,目录是可读的,但不是可写的。因此,ffmpeg无法创建新文件。我创建了一个不同的输出目录,并将其chmod777,瞧!有趣的是,我从exec得到了一个数组
ffmpeg -i inputfile [more_params] 2>&1
$ffmpeg = "ffmpeg Installed path";
$flvfile = "source video file with root path";
$png_path " "Destination video file with root path and file type";


exec("$ffmpeg -y -i $flvfile -vframes 1 -ss 00:01:60 
     -an -vcodec png -f rawvideo -s 110x90 $png_path");
$output = shell_exec('/home/person/www/ffmpeg 2>&1');
echo "<pre>$output</pre>";