我想要从一个PHP脚本中执行系统上存在的一个Bash脚本。我有两个脚本在系统上存在。其中一个是名为 client.php
的PHP脚本,位于 /var/www/html
,另一个是名为 testscript
的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后仍然遇到了这个错误。如何让它能够在浏览器中正常工作?请帮忙。
sudo
权限,或者将该脚本封装成SUID二进制文件。但无论哪种方式,都要非常小心。如果错误调用脚本或传递错误数据,你就会为远程用户提供一个能访问你服务器root shell的入口,而你的服务器也会崩溃。 - Marc B