如果腳本以32位或64位方式運行,是否有人知道在PHP中進行檢查的方法?目前我使用PHP 5.3.5。檢查您的代碼是否在64位PHP上運行
理想情況下,我想編寫一個函數,所以我的代碼可以是這樣的:
if(is_32bit() === true) {
do_32bit_workaround();
}
do_everything_else();
任何人有什麼想法?
如果腳本以32位或64位方式運行,是否有人知道在PHP中進行檢查的方法?目前我使用PHP 5.3.5。檢查您的代碼是否在64位PHP上運行
理想情況下,我想編寫一個函數,所以我的代碼可以是這樣的:
if(is_32bit() === true) {
do_32bit_workaround();
}
do_everything_else();
任何人有什麼想法?
檢查PHP_INT_SIZE
常數。它會根據寄存器的大小而變化(即32位與64位)。
在32位系統PHP_INT_SIZE
應,對於64位應該是。
請參閱http://www.php.net/manual/en/language.types.integer.php瞭解更多詳情。
我只是環顧四周,沒有發現任何太有希望的東西。很有可能您可以使用$_SERVER['SERVER_SOFTWARE']
來告訴(查看您的系統上打印的內容),但將其設置爲便攜且始終準確可能無法實現。
試試這個簡單的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...
}
你可以寫這樣的功能:
function is_32bit(){
return PHP_INT_SIZE === 4;
}
然後您可以使用您發佈的示例代碼:
if (is_32bit()) {
do_32bit_workaround();
} else {
do_everything_else();
}
少就是多了,簡答題總是最好的答案。 – SparK 2017-03-28 21:08:37
它似乎這個問題在這裏回答: http://stackoverflow.com/questions/2353473/can-php-tell-if-the-server-os-it-64-bit – 2012-07-19 23:20:20