当前位置: 首页 > 知识库问答 >
问题:

php调用shell脚本

宋洲
2023-03-14

用途:使用php将命令直接输入minecraft服务器控制台

我正在尝试使用php脚本(从浏览器运行)来执行shell脚本。当我从终端运行php时,它就可以工作了!但在浏览器中,什么都不会发生。

exec('sudo -u root sh /home/minecraft/whitelist-reload.sh', $out, $ret_val);

从终端运行时,我得到一个“数组0”,但浏览器给我一个“数组1”

问题是什么?一旦我运行了shell,之后的一切不应该像在终端上一样工作吗?(shell脚本内部的内容是否重要?)

shell拥有所有rx权限,并作为

www-data ALL = NOPASSWD: /home/minecraft/whitelist-reload.sh

共有2个答案

袁河
2023-03-14

结果是。。。在将www数据输入到sudoers文件后,我所需要做的就是在它后面取“-u根”

方建明
2023-03-14

问题是,您在终端上运行脚本的用户可能具有sudo权限,而apache/webserver用户没有,因此$ret\u val(实际上只是一个状态代码)设置为1(表示错误)。

尝试var_dump($out);在这两种情况下查看exec调用的结果。要从浏览器执行这种操作,您可能需要查看proc_open和系列,或者有一个chmod'ed到777的脚本,这样apache用户也可以运行它。然后让该脚本调用实际的外壳脚本并返回其输出。然而,这是非常危险的,并且应该仅用于在您自己的机器上测试环境。永远不要在生产环境中这样做!

我也在这里发布了几个问题,这些问题可能会提供信息:

ssh上的交互

打开第二个shell,加载配置文件变量并调用另一个脚本

 类似资料:
  • 问题内容: 我有一个文件,它是需要SUDO才能工作的bash脚本。 我可以使用SUDO从命令行运行它,但系统会提示我输入SUDO密码。 我想通过php通过php运行此脚本,但是如果我调用SUDO,它就不像命令行那样可以提示我输入密码。有没有办法通过sudo调用传递sudo的密码? 我怎样才能做到这一点? 问题答案: 编辑sudoers文件(带有),并添加一条规则,该规则允许Web服务器用户无需密码

  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 问题内容: 我试图弄清楚如何从Shell脚本调用Python函数。 我有一个具有多个功能的Python文件,我需要在我的shell脚本中使用它们返回的值。有没有办法做到这一点。 我这样做是为了使用Python读取配置文件并在shell中获取值。还有其他更好的方法来实现这一目标。 包含: 我需要将Python函数返回的值存储在shell变量中。 问题答案: 您可以通过要求Python解释器打印结果来

  • 问题内容: 如何从外壳脚本内部执行Java方法? 问题答案: 您只能调用该方法。设计您的方法,使其调用所需的方法。 当我说 调用 方法时,您不会显式调用它。调用它是Java程序的唯一入口点。 如果您的班级看起来像: 您可以使用以下命令行在您可以找到的目录中调用from (如果您位于下面显示的结构的目录中): 如果要从其他目录(请参见下面的目录结构)执行此操作,则必须设置类路径。 为了清楚起见,请采

  • 问题内容: 我正在使用此处提供的有用示例,使用JSch exec在远程服务器上执行Shell脚本。我可以看到脚本返回的回显,并且结尾处的退出状态为0-乍一看,一切看起来都很不错。 但是,问题在于该脚本本身会调出其他脚本,而这些脚本似乎被完全忽略,只是被跳过了。 该脚本直接调用其他脚本。即脚本的第一行是这样的: 任何人都可以建议以任何方式克服这一点吗?我确实开始研究“ shell”通道而不是“ ex

  • 本文向大家介绍php调用shell的方法,包括了php调用shell的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php调用shell的方法,分享给大家供大家参考。具体方法如下: 一、配置 查看php.ini中配置是否打开安全模式,主要是以下三个地方 safe_mode =  (这个如果为off下面两个就不用管了) disable_functions = safe_mode_exe