一尘不染

从PHP脚本执行Shell脚本

php

我想从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,我仍然收到此错误。
我如何从浏览器中获取它?请帮忙。


阅读 743

收藏
2020-05-29

共1个答案

一尘不染

我将在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用户身份运行文件,则可以尝试以下二进制包装器。签出此解决方案以完成您想做的相同事情。

2020-05-29