从 PHP 脚本运行 PATH 中的 Bash 命令

从 PHP 脚本运行 PATH 中的 Bash 命令

Debian 8,我正在尝试创建一个可以放在下面的脚本/sbin(它在我的$PATH环境变量中),以便可以运行它,该命令只是几行的简单回显。我已经创建了一个 bash 脚本并使其可执行,因此我可以像任何其他命令一样从我的终端运行它,但我无法从我的 PHP 脚本运行它,即使环境变量$PATH在我的终端和我的脚本中是相同的(我已经验证了这一点)。

该脚本将被调用ifconfig(我知道它是一个过时的程序,在 debian 8 中不再存在,但我现在无法绕过它,所以我需要一个存根)。

  • 当我ifconfig从终端运行时,我得到了所有成功的输出。
  • 当我运行ifconfig脚本时,我得到一个FALSE
  • 当我运行 a 时which ifconfig,终端输出/sbin/ifconfig
  • 当我从 PHP 脚本运行时which ifconfig,它没有返回任何路由。

如何让这个 bash 脚本在 PHP 上运行?shell_exec('ifconfig'); 或者如何操纵shell_exec('ifconfig');

该脚本在 apache-2.4 下运行

我发布此信息是因为我不确定它应该出现在 Stack Overflow、Super User 还是 Server Fault 中。

答案1

您应该注意以下几点:

  1. 您的 php.ini 配置文件是否允许使用 shell_exec()?
  2. 通常,所有命令都将使用 www-data 用户执行。话虽如此,您应该检查用户是否真的可以运行相关命令。如果您所在的系统使用 sudo,那么这是一种允许它的好方法。
  3. 请记住,当 safe_mode 处于开启状态时,您不能使用 shell_exec()。
  4. error.log 和 access.log 文件是检查正在发生的事情的最佳位置,特别是当您没有打开 display_errors 时。

再见!

相关内容