[英]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.