gpt4 book ai didi

php - 为什么 shell_exec 对某些命令不起作用/不输出?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:43 24 4
gpt4 key购买 nike

 echo shell_exec("ps auxwww");
echo shell_exec("cut -d. -f1 /proc/uptime");
echo shell_exec("date");

给出输出;

 echo shell_exec("ifconfig eth0");
echo shell_exec("top -n 1");

不给出输出

当我通过 putty 以 root 身份登录并执行它们时,所有这些命令都可以正常工作。我在这里阅读了一些类似问题的问题,有人说在命令末尾添加“2>&1”将修复它。这对我来说没有任何作用。还尝试仅使用 exec() 而不是 shell_exce()。有人知道发生了什么事吗?/我做错了什么?

谢谢你的时间

最佳答案

据我所知,通过PHP生成输出的命令有一个共同点:

  • 不需要root权限
  • 他们只是将内容附加到标准输出

常见问题包括:

  • 程序执行失败,你永远不会知道,因为 shell_excec() 的错误检查功能非常差(尽管你至少可以测试它的返回值是否为 null )
  • 该命令将输出发送到交互式终端。

程序执行失败的原因与在常规 shell 中完全相同:

  • 缺乏特权
  • 错误或缺少环境变量
  • 错误或缺少参数和/或输入数据
  • 等等等等

在你的情况下:

  • ifconfig 通常位于/sbin/ifconfig;非 root 用户的路径中没有 /sbin
  • top 期望更新 TTY 窗口中的随机字节

我的建议是使用提供更多信息的函数进行故障排除,例如 exec()但请确保您确实阅读了此类信息。阅读 stderr 也很有帮助——您可以将它重定向到其他地方(文件或 stdout)或 use a function that can read it直接。

关于php - 为什么 shell_exec 对某些命令不起作用/不输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com