exec("ifconfig -a", $array);
无法获取到物理网口的mac地址,只能获取到虚拟主机的mac地址.
因此用
$fp = popen("ifconfig eth0", "r");
<?php
/*
* 获取 Linux系统网络设备mac地址
* $eth0 = new MacAddr("eth0");
* echo "$eth0->netdev : $eth0->addr \n";
*/
class MacAddr{
var $addr;
var $netdev;
function MacAddr($dev_name){
$this->netdev = $dev_name;
$fp = popen("ifconfig $dev_name", "r");
$line = fgets($fp);
if (preg_match("/$dev_name/",$line)) {
while(!feof($fp)) {
$line = fgets($fp);
$tmp_array = array();
if (preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$line,$tmp_array[0])) {
$tmp_array = str_replace(":","",$tmp_array[0],$count);
$this->addr = $tmp_array[0];
echo "$dev_name:$tmp_array[0] count:$count \n";
unset($tmp_array);
break;
}
}
} else {
echo "not fount $dev_name ! \n";
$this->addr = "not fount $dev_name !";
}
pclose($fp);
return $this->addr;
}
}
$eth0 = new MacAddr("eth0");
$wlan0 = new MacAddr("wlan0");
echo "$eth0->netdev : $eth0->addr \n";
echo "$wlan0->netdev : $wlan0->addr \n";
?>