【问题标题】:Running shell commands from PHP - With root permissions or sudo从 PHP 运行 shell 命令 - 使用 root 权限或 sudo
【发布时间】:2011-10-07 15:16:04
【问题描述】:

我将解释我正在尝试做什么,因为有人可能对此有更好且完全不同的方法。

我正在尝试安装 FFMPEG,但不只是安装它,我正在制作一个自动安装程序来安装一些 PHP 脚本,如果还没有安装 FFMPEG。

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

我有 3 个选择:

  • 使用 exec 函数从服务器上的源代码构建,这 需要 root 权限。
  • 找到一个FFMPEG的预编译二进制文件,很简单,我做到了,但是 然后我意识到它没有正确的编解码器,所以无法正常工作。
  • 使用 YUM 或 APT-GET 安装 FFMPEG,这很好,但它 需要 root 权限。

那么,我该怎么做:

使用 PHP 中的 YUM/APT-GET 并设置 sudo

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

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

【问题讨论】:

  • +1 用于解释您打算做什么并对其他方法持开放态度。另外,你不能用./configure --prefix=~/ffmpeg && make && make install在你的主目录中编译它,如果你需要的话,也可以复制需要的编解码器吗?
  • @Carlos Campderrós:谢谢,我会看看它,虽然不是 100% 确定我在 linux 上做了什么。我只是边走边捡。
  • 你需要解释更多你想要达到的目标。它是通用的东西吗?还是将在受控环境中使用,例如你自己的电脑?因为你试图做的事情非常不寻常,如果你强迫他们这样做,很多人不会对这个想法感到满意。 FFMPEG 带有一长串复杂的依赖关系,在我看来,在随机计算机上自动安装它是个坏主意。
  • @haimg:是的,它是通用的,我有一些 PHP 视频转换 srcipts(交钥匙的东西),为了使它更加交钥匙,我正在制作一个安装程序来安装/配置php 脚本,如果 FFMPEG 不存在,也安装它。
  • ffmpeg 在仅使用标准存储库的 Centos 5 中不可用。我建议你重新考虑你的想法。安装 php 脚本是一回事。从第三方存储库自动安装 ffmpeg,它具有很大的依赖关系和许可问题,是完全不同的。

标签: php linux root sudo


【解决方案1】:

sudo in php 如果使用 SSH,会容易得多。除其他外,您可以使用“expect”来等待适当的提示。如果有办法使用内置的 exec() 或 system() 做到这一点,我不知道。

【讨论】:

    【解决方案2】:

    如果您最终从源代码编译或从 repo 安装,您可以通过此项目处理安装过程,该项目允许 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 交互的脚本。

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 2011-12-22
      • 2013-07-01
      • 2014-12-29
      • 2020-10-02
      • 2012-12-11
      • 2020-05-22
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多