如何确定我的操作系统是32位还是64位?

时间:2012-02-10 13:32:37

标签: php architecture operating-system x86-64

我尝试使用<?php echo php_uname("m"); ?>,它返回 i586 但我使用的是Windows 7 64位,我可以在“我的计算机”属性中看到它。所以我期待输出中的 x86_64 。有谁知道如何在PHP中确定OS体系结构?

我也想为Mac OS X做同样的事情。任何帮助,将不胜感激。

4 个答案:

答案 0 :(得分:9)

这是一个php解决方案:)

echo strlen(decbin(~0));

答案 1 :(得分:6)

更简单

echo 8 * PHP_INT_SIZE;

答案 2 :(得分:1)

我最好的猜测是,即使您的操作系统是64位,您的Web服务器也是x86,并以WOW64模式(32位)运行。如果是这种情况,那么在纯PHP中应该很难理解。

我的建议(感谢Leigh链接到类似的问题)是使用WMI:

$out = array();
exec("wmic cpu get DataWidth", $out);
$bits = strstr(implode("", $out), "64") ? 64 : 32;
echo $bits; // 32 or 64

答案 3 :(得分:0)

php_uname检查PHP的操作模式 而不是操作系统

因此,如果您的操作系统是64位但php_uname正在返回i586,那是因为您运行的是32位版本的PHP

了解PHP的体系结构可能比了解操作系统的体系结构更重要。例如,如果您依赖于64位操作系统来在代码中做出决策,那么当您以32位模式执行PHP时,您可能会发现自己编写的代码在64位操作系统上失败(就像您现在一样)。这实际上是你所处的精确情况,你期望64位结果但得到32位的结果,这是因为PHP的操作模式。

您的问题的真正解决方案是在64位操作系统上下载并安装64位版本的PHP,以便查看64位结果。

这是一行简单的代码,用于检测PHP是以64位还是32位执行:

empty(strstr(php_uname("m"), '64')) ?  $php64bit = false : $php64bit = true;

执行$php64bit上方的行后,您将truefalse

以下是相同代码的多行版本:

// detect which version of PHP is executing the script (32 bit or 64 bit)
if(empty(strstr(php_uname("m"), '64'))){
  $php64bit = false;
}else{
  $php64bit = true;
}

这可以通过检查php_uname是否存在64来实现,如果PHP在64位模式下执行,将会找到该library("xlsx") library("gdata") library("rJava") setwd("C:/Users/Owner/Desktop/FolderDatabase") getwd() files = list.files(pattern = "\\.xlsx") #View(files) dfList <- list() for (i in seq_along(files)){ dfList[[paste0("excel",i)]] <- read.xlsx(files[i], sheetIndex = 1) } # Calling the xlsx lists that were created from the directory dfList$excel1 dfList$excel2 dfList$excel3 dfList$excel4