2011-03-24 75 views
26

如果腳本以32位或64位方式運行,是否有人知道在PHP中進行檢查的方法?目前我使用PHP 5.3.5。檢查您的代碼是否在64位PHP上運行

理想情況下,我想編寫一個函數,所以我的代碼可以是這樣的:

if(is_32bit() === true) { 
    do_32bit_workaround(); 
} 
do_everything_else(); 

任何人有什麼想法?

+0

它似乎這個問題在這裏回答: http://stackoverflow.com/questions/2353473/can-php-tell-if-the-server-os-it-64-bit – 2012-07-19 23:20:20

回答

61

檢查PHP_INT_SIZE常數。它會根據寄存器的大小而變化(即32位與64位)。

在32位系統PHP_INT_SIZE應,對於64位應該是。

請參閱http://www.php.net/manual/en/language.types.integer.php瞭解更多詳情。

+7

不是很有用。請參閱http://stackoverflow.com/questions/6303241/find-windows-32-or-64-bit-using-php以獲得更好的答案 – matb33 2012-09-14 14:46:50

+11

@ matb33 ...這與switch語句的答案相同......? – coreyward 2012-09-14 15:01:10

+1

問題在於,它沒有說明對於32位和64位,「PHP_INT_SIZE」的值應該是多少。 matb33的鏈接提供了這些信息。 – 2014-07-09 17:58:51

0

我只是環顧四周,沒有發現任何太有希望的東西。很有可能您可以使用$_SERVER['SERVER_SOFTWARE']來告訴(查看您的系統上打印的內容),但將其設置爲便攜且始終準確可能無法實現。

0

試試這個簡單的PHP函數

<?php 

function maxBit() 
{ 
    list($return, $number) = array(0, 0); 

    // Start process 
    while (true) { 
     // Get number at x bits 
     $numX = intval(bcsub(bcpow('2', "{$return}"), '1')); 
     // Check number 
     if ($numX != 0 && $number == $numX) { 
      break; 
     } 
     // Update number 
     $number = $numX; 
     // Update return value 
     $return++; 
    } 

    return $return; 
} 

// Check is 64bit 
if (maxBit() == 64) { 
    // Write your code here... 
} 
6

你可以寫這樣的功能:

function is_32bit(){ 
    return PHP_INT_SIZE === 4; 
} 

然後您可以使用您發佈的示例代碼:

if (is_32bit()) { 
    do_32bit_workaround(); 
} else { 
    do_everything_else(); 
} 
+0

少就是多了,簡答題總是最好的答案。 – SparK 2017-03-28 21:08:37

相關問題