2011-10-07 171 views
1

我将解释我正在尝试执行的操作,因为有人可能会有更好,完全不同的方法。从PHP运行shell命令 - 使用root权限或sudo

我想安装FFMPEG,但不只是安装它,我做了一个自动化的安装程序,安装一些PHP脚本,还有FFMPEG,如果它尚未安装。

我找不到任何可以安装FFMPEG的自动化PHP脚本,所以我猜这比我想象的要困难得多。

我有3个选项来做到这一点:从使用exec功能在服务器上的源

  • 构建,这需要 root权限。
  • 找到一个FFMPEG的预编译二进制文件,很容易做到,我做到了,但是 后来我意识到它没有正确的编解码器,所以无法正常工作。
  • 使用YUM或APT-GET来安装FFMPEG,这会很好,但它 需要root权限。

那么,怎样才能我要么:

使用YUM /从PHP APT-get和set须藤

OR

已编译后安装的FFMPEG编解码器。使用我发现的预编译的二进制文件,如果可能的话,我可以安装缺少的编解码器(我认为是蹩脚的mp3,也许其他人也是如此)。或者需要将编解码器内置到二进制文件中。

我认为首选选项是使用YUM/APT-GET,因为我的目标主要是Centos 5,也许Ubuntu也是。

+0

+1用于解释您打算做什么,并对其他方法开放。另外,如果你需要它们,你不能用'./configure --prefix =〜/ ffmpeg && make && make install'在你的主目录内编译它,并在那里复制所需的编解码器吗? –

+0

@CarlosCampderrós:谢谢,我会仔细研究一下,尽管不能100%确定我在Linux上做了什么。我只是随便选择它。 – Drahcir

+0

你需要更多地解释你想要达到的目标。这是一个普遍的目的吗?或者它将用于受控的环境中,例如你自己的电脑?因为你想要做的事情非常不寻常,而且很多人不会对这个想法感到满意,如果你强迫他们这样做的话。FFMPEG带有复杂依赖关系的长尾,在随机计算机上自动安装它是一个坏主意。 – haimg

回答

0

sudo in php如果您使用SSH,会更容易。除此之外,您可以使用“期望”等待适当的提示。如果有办法通过内置的exec()或system()来做到这一点,我不知道它。

+0

知道它与PHP的SSH2类一起工作 – Drahcir

0

如果您最终从源代码编译或从回购安装,您可以通过此项目来处理安装过程,该项目允许PHP获取并与真正的Bash shell进行交互。在这里获得:https://github.com/merlinthemagic/MTS

下载您只需使用下面的代码后:

$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true); 
$return1 = $shell->exeCmd('yum -y install FFMPEG'); 
//the return will be a string containing the return of the command 
echo $return1; 

您将需要处理的边缘情况时,即有需要接受或依赖是一个GPG密钥相互矛盾的。但该项目可让您编写所有Bash交互的脚本。