[英]ionCube Loader on Windows 64-bit running PHP 5.6.8 not working
[英]Checking if your code is running on 64-bit PHP
如果腳本以 32 位或 64 位運行,有人知道在 PHP 中檢查的方法嗎? 目前我使用的是 PHP 5.3.5。
理想情況下,我想編寫一個函數,以便我的代碼如下所示:
if( is_32bit() === true ) {
do_32bit_workaround();
}
do_everything_else();
有人有什么想法嗎?
檢查PHP_INT_SIZE
常量。 它會根據寄存器的大小(即 32 位與 64 位)而變化。
在 32 位系統中PHP_INT_SIZE
應該是4 ,對於 64 位系統應該是8 。
有關更多詳細信息,請參閱http://php.net/manual/language.types.integer.php 。
你可以寫一個這樣的函數:
function is_32bit(){
return PHP_INT_SIZE === 4;
}
然后您可以使用您發布的示例代碼:
if ( is_32bit() ) {
do_32bit_workaround();
} else {
do_everything_else();
}
獲取位數的一種簡短方法。
strlen(decbin(~0));
這是如何工作的:
按位補碼運算符,波浪號~ ,翻轉每一位。
@see http://php.net/manual/en/language.operators.bitwise.php
在0上使用它會打開整數的每一位。
這為您提供了 PHP 安裝可以處理的最大數量。
然后使用 decbin() 將以二進制形式為您提供此數字的字符串表示
@see http://php.net/manual/en/function.decbin.php
和 strlen 會給你位數。
這是一個可用的功能
function is32Bits() {
return strlen(decbin(~0)) == 32;
}
這是一個可以從控制台使用的示例
對於 Windows:
php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | findstr Thread
對於 Linux
php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | grep Thread
輸出示例:
64 bit
Thread Safety => disabled
我只是環顧四周,沒有發現任何有希望的東西。 很有可能您可以使用$_SERVER['SERVER_SOFTWARE']
來告訴(檢查它在您的系統上打印的內容),但是使其便攜且始終准確可能是不可行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.