当前位置: 首页 > 面试题库 >

从PHP脚本执行Shell脚本

郝杰
2023-03-14
问题内容

我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为client.phpat at
的PHP脚本/var/www/html,另一个是称为testscriptat at 的Bash脚本/home/testuser

我的client.php脚本看起来像

<?php
  $message=shell_exec("/home/testuser/testscript 2>&1");
  print_r($message);
?>

我的睾丸看起来像

#!/bin/bash
echo "Testscript run succesful"

当我在终端上执行以下操作时

php client.php

我在终端上得到以下输出

Testscript run successful

但是当我在打开页面时

http://serverdomain/client.php

我得到以下输出

sh: /home/testuser/testscript: Permission denied

即使执行了chmod + x testscript,我仍然收到此错误。
我如何从浏览器中获取它?请帮忙。


问题答案:

我将在WWW文件夹下的某个目录下有一个名为scripts的目录,以便无法从Web上访问它,但可以通过PHP来访问它。

例如 /var/www/scripts/testscript

确保您的用户/组testscript与您的Web文件相同。例如,如果您client.php的所有者是apache:apache,请使用将bash脚本更改为相同的用户/组chown。您可以client.php通过执行以下操作找出自己和Web文件的所有权ls -al

然后跑

<?php
      $message=shell_exec("/var/www/scripts/testscript 2>&1");
      print_r($message);
    ?>

编辑:

如果您确实想从Web服务器以root用户身份运行文件,则可以尝试以下二进制包装器。签出此解决方案以完成您想做的相同事情。



 类似资料:
  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了

  • 本文向大家介绍Android 从Gradle执行Shell脚本,包括了Android 从Gradle执行Shell脚本的使用技巧和注意事项,需要的朋友参考一下 示例 Shell脚本是一种非常通用的方法,可以将您的构建扩展到您能想到的任何东西。 例如,这是一个简单的脚本,用于编译protobuf文件并将结果java文件添加到源目录中以进行进一步编译: 此示例的“ pbScript.sh” shell

  • 问题内容: 我在树莓派上有一个带有2个按钮(打开和关闭)的PHP网页,“打开”按钮重定向到On.php,“关闭”按钮重定向到Off.php在“ / usr / lib / cgi-bin”中,我有一个python脚本我想执行(script.py),我可以通过在终端上键入以下内容来完美地执行它 如果我从终端执行此操作,它将起作用。 问题是我的“ / var / www”文件夹中的PHP文件(On.p

  • 您好,我正在尝试在apache2服务器上运行Raspberry Pi,使用PHP中的pyautogui库执行Python脚本。从命令行执行Python脚本时,我没有遇到任何问题,但通过PHP的“shell_exec”执行时,我收到以下错误消息: 错误登录apache2: 回溯(最近一次调用):文件“/home/pi/Projects/Python/wakeUp.py”,第2行,在导入pyautog

  • 问题内容: 我有一个读取输入的Shell脚本 我正在使用JAVA APi执行此Shell脚本 在Java控制台中,我可以看到输出 键入要检查的年份(4位数字),然后按[ENTER]: 现在,如何将值传递到我脚本中的Shell脚本中的实际问题是如何读取变量“ year” 我已经按照建议编辑了代码,但在我们更正的地方无法正常工作 问题答案: 要将执行脚本的Java程序中的值传递给脚本,请使用命令行参数