假设 IPv4 地址表示中有前导零,例如012.012.012.012
.
为了抑制前导零,我只需编写以下代码,它就可以在我的 Mac 上按预期工作:
% php -r 'var_dump(long2ip(ip2long("012.012.012.012")));'
Command line code:1:
string(11) "12.12.12.12"
% php --version
PHP 7.3.25 (cli) (built: Dec 25 2020 22:03:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.25, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans
但是这段简单的代码在 CentOS 7 上不起作用,它似乎ip2long("012.012.012.012")
返回false
值:
$ php -r 'var_dump(long2ip(ip2long("012.012.012.012")));'
string(7) "0.0.0.0"
$ php --version
PHP 7.3.25 (cli) (built: Nov 24 2020 11:10:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies
$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
两个 PHP 版本是相同的,我希望它们返回完全相同的值。我还阅读了ip2long 文档,并试图找出这种行为是否有任何特殊选项/配置,但没有运气。
有人能引导我走向正确的方向吗?是什么让他们与众不同?我该怎么办?