【问题标题】:How to find which version of libssh2 is required for my php version (on Windows)如何查找我的 php 版本需要哪个版本的 libssh2(在 Windows 上)
【发布时间】:2015-12-10 19:59:45
【问题描述】:

当我检查我的 php 版本时,我收到以下警告:

PHP Warning:  PHP Startup: ssh2: Unable to initialize module
Module compiled with module API=20121212
PHP    compiled with module API=20131226
These options need to match
 in Unknown on line 0

我正在尝试了解哪些版本可以一起使用,以及如何获取正确的版本来使用 SSH2 设置 PHP。我已经能够从以下位置找到 libssh 的 .tar.gz 版本:

https://www.rpmfind.net/linux/RPM/remi/enterprise/6/x86_64/php56-php-pecl-ssh2-0.12-4.el6.remi.x86_64.html

问题是我使用的是 Windows 机器而不是 Linux。有谁知道我是否可以为 Windows 获得相同的 libssh 版本?还是我必须将 PHP 降级到与 ssh2 相同的级别?还是没什么好担心的,只是 Windows 的一个怪癖?

以下是一些可能有用的细节:

OS: Windows 10 (x64)
PHP Version: PHP 5.6.15 (cli) (built: Oct 29 2015 12:39:50)
Microsoft Visual C++ 2015 Redistributable (x64) 11.0.61030
Server version: Apache/2.4.17 (Win64)
Apache Lounge VC11 Server built:   Oct 13 2015 11:37:51

此外...我找到了我下载的 ssh2 zip 的版本。它是 5.5 线程安全 (TS) x64,来自:https://pecl.php.net/package/ssh2/0.12/windows 所以,我想这意味着我需要将我的 PHP 降级到 5.5 才能正常工作。这是正确的还是有更好的方法?

【问题讨论】:

  • 不,这不是 Windows 的怪癖。您正在尝试加载针对(例如)php 5.2 编译的 dll,同时运行更新的(可能是 5.3/5.4?)版本。如果你用 linux .so 文件尝试同样的事情,你会得到完全相同的警告。
  • 人们只能希望微软有朝一日能够成功创建一个包管理系统,因为它在 15 年前在其他操作系统中得到了证明和日常使用,并解决了这些问题。我的意思是他们在过去 10 年里抄袭了其他所有东西。为什么不呢?

标签: php windows apache libssh2


【解决方案1】:

我找到了解决问题的方法。如 OP 中所述,问题在于 PHP 模块的版本比 SSH2 模块更新。问题是如何找到适用于所述设置的版本。这被证明是相当棘手的,因为需要集成的系统比我最初想象的要多。我错误地认为最新版本会一起玩得很好。

当我运行 Windows 10 64 位时,我想获得针对此运行的 PHP 的稳定版本 - 那将是 PHP 7。如此处所述:http://windows.php.net/download/。最初我下载了 PHP 7.0,但这与我想安装的另一个模块(即 MongoDB)并没有很好的配合。

当我查看 MongoDB 时,我意识到还没有 PHP 7.0 的驱动程序,所以我能得到的最新的是 PHP 5.6。这意味着我不得不接受一个“实验性”的 64 位 PHP 版本。所以我做出了转变,一切都很好,直到我决定我想获得 Composer 以便我可以管理我的 PHP 依赖项。

当我尝试使用 Windows 安装程序安装 Composer 时,它因未知异常而失败,并建议我尝试从命令行获得更好的错误响应。所以我按时做了,错误表明 ssh2 模块与 PHP 5.6 不兼容。

这最终让我问了关于 stackoverflow 的问题。

在深入研究了 ssh2 的版本之后,我被带到了以下页面:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/ 这告诉我与 SSH2 扩展兼容的最新版本的 PHP 是 PHP 5.5。所以......看起来解决方案是降级到版本 5.5。

当我开始寻找要下载的新(旧)版本时,我偶然发现了这个很棒的捆绑包站点:https://www.apachelounge.com/viewtopic.php?t=6123 从那里我可以下载这个版本 (https://phpdev.toolsforresearch.com/php-5.5.20-Win32-VC11-x64.zip),它将包含我在正确版本中需要的所有模块。

因此,总而言之,对哪些版本协同工作进行更深入的分析会有所帮助,或者了解 Apache Lounge 将所有版本都放在一个整洁的捆绑包中协同工作。

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2011-01-29
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多