从PHP脚本执行Shell脚本

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

以上是 从PHP脚本执行Shell脚本 的全部内容, 来源链接: utcz.com/qa/427047.html

回到顶部