首页 > 解决方案 > 如何让 PHP 调用 shell 脚本?

问题描述

我有一个 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 并点击提交时,它确实将我带到http://example.com/generate.php?ip=1.1.1.1

我调用 shell 脚本的方式有问题吗?任何输入将不胜感激。

谢谢大家的意见,原来只是selinux。禁用 selinux 解决了这个问题。由于这不是网络连接系统,因此禁用 selinux 不是问题。

标签: phpbashshell

解决方案


su -s /bin/sh apache -c "./script 1.1.1.1"

您正在使用 root 权限执行脚本。尝试与您的用户一起执行脚本并查看结果。您可能需要为文件添加权限。

此外,出于安全原因,默认情况下禁用exec功能。您可以尝试编辑配置文件。

php 错误日志文件也将有助于阅读。

除此之外,整个想法真的很糟糕。使用 GET 或 POST 的参数执行 shell 脚本可能会导致坏事......


推荐阅读