首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用root权限或sudo从PHP运行shell命令

使用root权限或sudo从PHP运行shell命令
EN

Stack Overflow用户
提问于 2011-10-07 15:16:04
回答 2查看 1.3K关注 0票数 1

我会解释我想做什么,因为有人可能会有一个更好和完全不同的方法来解决这个问题。

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

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

我有三个选择:

  • 使用exec函数从服务器上的源构建,这需要根权限。
  • 找到一个预先编译好的FFMPEG二进制文件,很容易做,然后我做了,但后来我意识到它没有正确的编解码器,所以不起作用。
  • 使用YUM或APT安装FFMPEG,这将是很好的,但它需要根权限。

所以,我怎样才能:

使用YUM/APT-从PHP获得并设置sudo

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

我认为更好的选择是使用YUM/APT,因为我的目标大多是Centos 5,也可能是Ubuntu。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-08 17:27:58

如果使用SSH,sudo in php就容易得多。除其他外,您还可以使用"expect“来等待适当的提示。如果有一种方法可以用内置的exec()或system()来实现,我就不知道了。

票数 0
EN

Stack Overflow用户

发布于 2016-05-18 10:56:44

如果您最终从源代码编译或从回购程序安装,您可以通过这个项目处理安装过程,该项目允许PHP获得一个真实的Bash并与之交互。到这里来:https://github.com/merlinthemagic/MTS

下载后,只需使用以下代码:

代码语言:javascript
运行
复制
$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交互脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7689262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档