【问题标题】:Run ipconfig command with php使用 php 运行 ipconfig 命令
【发布时间】:2012-05-22 14:36:09
【问题描述】:

我使用此代码来了解访问者(客户)的一些信息。它一直在我的 Xampp 虚拟服务器上运行,但我无法在我的主服务器(主机)上运行。我看到的只是一个空白页。

$info = system('ipconfig /all');
echo $info;

【问题讨论】:

  • 主服务器是基于windows的服务器吗?
  • 不,服务器有Linux os (Apache)。
  • ipconfig 不在 Linux 上运行。为此使用 ifconfig
  • ipconfig 返回服务器的网络信息,而不是连接的客户端的网络信息。

标签: php windows cmd mac-address ipconfig


【解决方案1】:

这可能对你有帮助

服务器 IP

您可以从$_SERVER['SERVER_ADDR']获取服务器IP地址。

客户端 IP 地址

可以从$_SERVER['REMOTE_ADDR']获取客户端IP

编辑:您在 cmets 中询问如何获取外部命令的输出 - 一种方法是使用反引号,例如

$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;

#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);

#look for the output line describing our IP address
foreach($lines as $line)
{
   $cols=preg_split('/\s+/', trim($line));
   if ($cols[0]==$ipAddress)
   {
       $macAddr=$cols[1];
   }
}

但是如果客户端不在局域网上怎么办?

好吧,除非您可以让客户自愿提供该信息并通过其他方式传输,否则您会很不走运。请参阅 Peter G Mac 对使用 Javascript 的建议。

你也可以试试下面的命令

 <?php
  // http://www.php.net/manual/en/function.exec.php#85930

  $_ = null;

  // If you care about the return value, use this:
    passthru("C:\\WINDOWS\\system32\\cmd.exe /c custom.bat",$_);
    header('Content-Type: text/plain');
    echo $_;
  // if you don't care, just use this:
    $_ = exec("C:\\WINDOWS\\system32\\cmd.exe /c custom.bat");
?>

【讨论】:

    【解决方案2】:

    这只会获取服务器 IP 信息,而不是客户端。因为您在本地 PC 上运行代码,所以您将看到您的本地信息(与服务器信息相同)。

    另外,如果您的主机服务器正在运行 linux,则该命令将是 ifconfig,但这仍然只能获取服务器信息。

    【讨论】:

    • 这个服务器是 apache。那么,为什么它在 xampp 上运行?
    • xampp 将 apache 作为服务器运行。 xampp 只是灯安装(php、mysql、apache)的包装器
    • ipconfig/ifconfig 依赖于操作系统的命令不是Apache/PHP 一个
    【解决方案3】:

    好吧,既然你澄清了服务器是基于linux的,那么linux上的正确命令是

    /sbin/ifconfig -a
    

    返回的数据看起来会略有不同

    eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
              inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: 0000::000:0000:0000:0000/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:14141910 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6532919 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:4462743134 (4.4 GB)  TX bytes:1340503018 (1.3 GB)
              Interrupt:22 Memory:f6ae0000-f6b00000 
    

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2015-05-15
      相关资源
      最近更新 更多