【问题标题】:windows php 64 bit systems ATMwindows php 64 位系统 ATM
【发布时间】:2017-01-26 09:32:48
【问题描述】:

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

本项目可在 PHP 7、PHP 5.6 和 HHVM 上运行,ATM 仅支持 64 位系统。

它在带有php5.6linux 主机(cpanel)中运行良好。但在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

【问题讨论】:

  • ATM 仅表示“目前”,因此您的版本应该没问题。请解释“但在windows中不起作用。”。你得到什么行为?错误?具体(不正确)输出?
  • @GolezTrol 谢谢。我在问题中添加了错误。
  • 您可能在 64 位版本的 windows 上使用 32 位版本的 PHP
  • @Grey 不!在 wamp 之前,我使用的是xampp。在 xampp 中,架构是 x86
  • WAMPServer 有许多 PHP 版本可用作 WAMPServer 3 及更高版本的附加组件See here for all the ADDONS 您必须在 Windows 上使用 PHP7 或更高版本才能获得真正的 64 位版本的 PHP。在那之前,PHP 只是实验性的,就 64 位在 Windows 上运行而言,64 位整数实际上并不存在,直到 PHP7

标签: php wamp x86-64 wampserver


【解决方案1】:

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

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

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

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

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

【讨论】:

  • WAMPServer 有许多 PHP 版本可用作 WAMPServer 3 及更高版本的 ADDONS See here for all the ADDONS 所以不要按照 @Seth 的建议去做,并从他的链接中获取 PHP 版本。安装 WAMPServer PHP ADDONS 是下载/单击并开始
【解决方案2】:

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

“问题”可以在API.php around line 29 中找到。这个检查,但不正确,似乎是the recommended way 来检查 64 位。无论如何,如果他们真的依赖 8 位整数,我认为你不能在 Windows 上使用 PHP 5.6 这个库。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 2017-10-17
    • 2017-04-09
    • 2011-07-29
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多