我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为client.phpat at 的PHP脚本/var/www/html,另一个是称为testscriptat at 的Bash脚本/home/testuser。
client.php
/var/www/html
testscript
/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
/var/www/scripts/testscript
确保您的用户/组testscript与您的Web文件相同。例如,如果您client.php的所有者是apache:apache,请使用将bash脚本更改为相同的用户/组chown。您可以client.php通过执行以下操作找出自己和Web文件的所有权ls -al。
apache:apache
chown
ls -al
然后跑
<?php $message=shell_exec("/var/www/scripts/testscript 2>&1"); print_r($message); ?>
编辑:
如果您确实想从Web服务器以root用户身份运行文件,则可以尝试以下二进制包装器。签出此解决方案以完成您想做的相同事情。