windows php 64位系统ATM

windows php 64 bit systems ATM

我正在使用 this php 库。它提到了这一点:

This project can run on PHP 7, PHP 5.6 and HHVM, only 64 bit systems are supported ATM.

它在 linux 主机 (cpanel) 和 php5.6 中运行良好。但在 windows 中不起作用。我安装了wamp。在phpinfo(),似乎一切正常。有什么我想念的吗? ATM 是什么意思?

我的phpinfo():

错误:

Fatal error: Uncaught exception 'danog\MadelineProto\Exception' with message 'MadelineProto supports only 64 bit systems ATM' in C:\wamp64\www\telegramphp3\src\danog\MadelineProto\API.php on line 30

他们的 API.php 包含以下代码:

// Detect 64 bit
if (PHP_INT_SIZE < 8) {
    throw new Exception('MadelineProto supports only 64 bit systems ATM');
}

他们所做的不是检查你是否 运行 是 PHP 的 64 位版本,或者你的系统是否是 64 位的,而是 size 以字节为单位的整数是。该值在 PHP7(当前 Windows 版本)上可以是 4(32 位)或 8(64 位)。在旧版本的 PHP 中(至少在 5.6 的 64 位构建中,标记为实验性的)该值将始终为 4.

因此,为了在您的系统上使用该库,您需要:

  • 将您的 PHP 版本升级到 7
    • 可以找到当前的 Windows 版本 here,您可以尝试只替换当前的 PHP 安装或查找您的...包的更新包。

发生这种情况是因为库通过检查常量 PHP_INT_SIZE 来检查 64 位。当您使用 PHP 5.6 时,即使在 64 位系统上,此常量在 Windows 上始终为 4。有关 Windows 上的此问题,请参阅

可以在 API.php around line 29. This check, however incorrect, seems to be the recommended way 中找到 'problem' 以检查 64 位。无论如何,如果他们真的依赖 8 位整数,我认为你不能在 Windows 和 PHP 5.6.

上使用这个库

PHP 7 在 Windows 上支持 64 位整数,所以我认为如果你想使用这个库,你应该升级到 PHP 7。