我尝试使用<?php echo php_uname("m"); ?>
,它返回 i586 但我使用的是Windows 7 64位,我可以在“我的计算机”属性中看到它。所以我期待输出中的 x86_64 。有谁知道如何在PHP中确定OS体系结构?
我也想为Mac OS X做同样的事情。任何帮助,将不胜感激。
答案 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
上方的行后,您将true
或false
。
以下是相同代码的多行版本:
// 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
。