原因是:php中没有考虑主机序和网络序的转换,导致主机序为little-endian的机器上,long2ip()得到的IP反了。
下面是解决办法,我们自己判断little-endian和big-endian:
[php]
function long2ip_fix($ip_32)
{
$ip = long2ip($ip_32);
//先判断是big-endian还是little-endian
$foo = 0x3456789a;
switch (pack ('L', $foo)) {[......]