Linux 下检测 PHP 是 32 位,还是 64 位?

2017-05-04 17:57:28 +08:00
 JiaFeiX

除了写 PHP 脚本检测, 在 phpinfo 的信息下, 发现没有 WIN 下的 archtech 这个选项哎

Linux 下能在 phpinfo 或者 命令行下查看 PHP 版本吗?

3478 次点击
所在节点    问与答
9 条回复
JiaFeiX
2017-05-04 17:59:13 +08:00
“官方发布的 PHP 版本均为 32 位,一般来说不区分 32 位和 64 位,或者 64 位操作系统兼容 32 位的 PHP,但是在某些操作系统上还是区分 32 位和 64 位的,例如 windows 2008。”

在网上看到这个说法, 这个说法 对吗?
JiaFeiX
2017-05-04 18:05:18 +08:00
function is_64bit() {
$int = "9223372036854775807";
$int = intval($int);
if ($int == 9223372036854775807) {
/* 64bit */
return true;
}
elseif ($int == 2147483647) {
/* 32bit */
return false;
}
else {
/* error */
return "error";
}
}

echo "64 位检测:";

var_dump(is_64bit());

echo "32 位检测:";

function is_32bit()
{
$time = strtotime('2040-01-01 00:00:00');
if($time===false)
{
return true;
}

return false;
}
var_dump(is_32bit());

phpinfo();
zsdsz
2017-05-04 18:14:43 +08:00
@JiaFeiX 你写得太复杂了 PHP_INT_SIZE 就行了 4 字节的是 32 位 8 字节的是 64 位
billlee
2017-05-04 22:07:51 +08:00
@JiaFeiX #1 然而 *nix 下的 php 都是发行版编译的,和官方一点关系都没有
zsx
2017-05-04 22:32:54 +08:00
@JiaFeiX #1
@zsdsz

这个在 PHP 5 时代是不准的,在 Windows 下 64 位也是 4 字节: https://blog.zsxsoft.com/post/7
esile
2017-05-05 00:48:59 +08:00
应该跟系统有关系
shiny
2017-05-05 00:53:45 +08:00
以前掉一个坑里,32 位系统在 ip2long 时候有可能超出整型范围,变负数。
caola
2017-05-05 02:21:32 +08:00
php 都是发行的是原代码,你要通过编译才能安装,这与 32 位、64 位并没有什么直接关系吧,应该取决于你使用的编译器。
上面提到的 PHP_INT_SIZE 只是常量而已,表明 int 数据类型所占用的字节数和所处理的数量级,相当于 mysql 里的 int 和 bigint 数据类型一样一样的。

(以上纯属个人 YY,没有什么依据,请听楼下分解!)
artandlol
2017-05-05 08:10:50 +08:00
getconf LONG_BIT 查看机器码位数
调用下系统命令呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/359141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX