我有一个generate.php页面
<?php
exec("./script $ip");
?>
我已经验证了变量$ ip是从URL正确提取的。当它重定向到此页面时,它不会运行脚本。我还尝试验证该脚本适用于apache用户,并且确实可以。
su -s /bin/sh apache -c "./script 1.1.1.1"
从我的index.html页面设置IP的代码是这个
<form action="generate.php">
<input type="text" name="ip" />
<input type="submit" />
</form>
当我在框中输入IP并点击Submit时,确实将我带到http://example.com/generate.php?ip=1.1.1.1
我调用Shell脚本的方式有问题吗?任何输入将不胜感激。
谢谢您的所有投入,原来只是selinux。禁用selinux解决了此问题。由于这不是网络连接的系统,因此禁用selinux并不是问题。
答案 0 :(得分:1)
su -s / bin / sh apache -c“ ./script 1.1.1.1”
您正在以root特权执行脚本。 尝试与用户一起执行脚本并查看结果。您可能需要向该文件添加权限。
默认情况下,出于安全原因, exec 功能也被禁用。您可以尝试编辑配置文件。
此外,php错误日志文件也将有助于阅读。
除此之外,整个想法真的很糟糕。使用GET或POST参数执行shell脚本可能会导致不良后果...
答案 1 :(得分:0)
您可以尝试以下方法:
<?php
if (isset($_GET['ip'])) {
exec('./script ' + $_GET['ip']);
} else {
exec("./script $ip");
}
如果提供的话,您将在URL中使用ip
(例如:http://example.com/generate.php?ip=1.1.1.1),否则将使用以前的实现。