【问题标题】:PHP Install SSH2 on Windows machinePHP 在 Windows 机器上安装 SSH2
【发布时间】:2023-11-08 11:00:02
【问题描述】:

我正在尝试在 Windows+Apache 机器上安装 this。 文档说 SSH2 需要 OpenSSLlibssh2 库。 我在我的php.ini 文件中添加了这行:

extension=php_openssl.dll
extension=php_ssh2.dll

并重新启动 Apache,但仍然无法正常工作 (Fatal error: Call to undefined function ssh2_connect())。

谁能解释我如何安装这个服务?

【问题讨论】:

    标签: php windows apache dll libssh2


    【解决方案1】:

    如果您运行的是 xamp 3.2.1 和 PHP 5.6.8,这可能会对您有所帮助。

    按照 alex b 所说的做,并从这个页面 (link) 下载与您的 php 版本(和位)相对应的包

    我已经下载并替换到 C:\xampp\php\ext 中,它工作正常!

    希望这会有所帮助,问候。

    【讨论】:

    • 5.6 x86 版本的 DLL 包含恶意软件。不知道其他人。
    【解决方案2】:

    libssh2(部门):http://windows.php.net/downloads/php-sdk/deps/

    php_ssh2(分机):http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

    5.5 之前的版本已经有 libssh2.dll(来自第二个链接)

    【讨论】:

      【解决方案3】:

      我已经安装了 PHP 5.6.25/7.0.10 - MySQL 5.7.14,我目前正在使用 PHP 7.0。我有同样的错误。如果库 OpenSSL 和 libssh2 都在工作,我使用 phpinfo() 检查(你可以谷歌如何检查)。在我看到它们工作正常后,我在http://pecl.php.net/package/ssh2/1.0/windows(也可以找到http://windows.php.net/downloads/pecl/releases/ssh2/)下载了 7.0 版本的 php_ssh2.dll,把它放到 php\ext 文件夹中。比我使用 extension=php_ssh2.dll 将它包含在 php.ini 文件中。

      然后它出现在 phpinfo() 中。它奏效了。希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        我是这样做的:

        1. this location 下载 Win32 SSH2 PECL 扩展 (选择合适的版本);

        2. 提取档案的内容并:

          • php_ssh2.dllphp_ssh2.pdb 文件放在ext 文件夹中(例如C:\php\ext);
          • libssh2.dll 文件复制到C:\Windows\system32 和(如果你有Win64)C:\Windows\SysWOW64 文件夹;
        3. 运行以下命令注册 DLL:

          C:\> regsvr32 libssh2.dll
          
        4. 重新启动 Apache。

        最后说明

        如果您有 PHP x64,则必须查找 x64 版本的 SSH2 库/DLL。 This site 提供了一些用于 PHP 的 Win64 编译库,请先在这里尝试。

        希望这会有所帮助。

        【讨论】:

        • 我正在尝试将其设置为用于 Phing 的命令行。按照您的指示,php -iSSH2 support enabled,但是尝试运行 Phing 任务最终会出现有关 PHP 崩溃的 Windows 消息。任何提示如何解决它?
        • 通过将 Web 堆栈中的所有内容和任何内容更新到最新版本来解决。可能是一些 DLL 冲突或其他什么。
        • ...适用于 PHP 5.3.27 和 PHP 5.4.15 版本的系统。完美运行!
        • 我使用的是 PHP 5.6,可能运气不好,没有 .dll 可供下载,而且 vc11 不兼容。
        • 对于 PHP 7.1,我必须从这个位置获取:pecl.php.net/package/ssh2/1.1.2/windows(线程安全版本)。如this answer中所述,我将这些文件复制到我的 php/ext 目录中。尝试运行 regsvr32 对我不起作用,但我不确定它是否有必要。我在 php 目录中找到了 libssh2.dll 的副本。
        【解决方案5】:

        修复对我有用的问题。我正在运行 xampp v. 3.2.1 apache 2.2 面临同样的问题,尝试将 dll 文件放在不同的 c: 位置,但最终失败了,这有帮助。

        1.) 从http://pecl.php.net/package/ssh2/0.12/windows下载版本特定的dll文件并解压文件

        请注意,即使您使用的是 64 位版本的 windows,也请根据您的 php 版本下载 32 版本的 THREAD SAFE ssh,即 Thread Safe (TS) x86

        2.) 在 C:\xampp\php 中添加/替换 libssh2.dll(标准安装)

        3.) 添加/替换 C:\xampp\php\ext 中的 php_ssh2.dll 和 php_ssh2.pdb(标准安装)

        4.) 重启apache服务器

        工作就像一个魅力

        干杯

        【讨论】:

        • 请告诉我从哪里可以得到 libssh2.dll 和 php_ssh2.dll 版本:Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/7.0.6 on x86 Architecture .检查 phpinfo.php,它显示 OpenSSL 已启用。我发现很难获得正确的 dll。尝试了很多,但没有一个对我有用。任何帮助将不胜感激。
        【解决方案6】:
        1. php_ssh2.dll 放在分机文件夹中
        2. libssh2.dll放在php文件夹中
        3. 重启IIS

        对我有用

        • PHP 5.4.25 NTS + Windows Server 2012

        【讨论】:

        • 我个人(在 Windows 7 上)必须将这些库添加到 C:\Windows\SysWOW64(在 32 位上是 C:\Windows\System32
        【解决方案7】:

        如果有人在安装 SSH2 时遇到问题,我是这样做的:

        1) 从PHP.net下载SSH2 PECL库[选择合适的版本]。

        2) 将 libssh2.dll 复制到 System32 [x86] 或 SysWOW64 [x64] 文件夹。

        3) 将php_ssh2.dllphp_ssh2.pdb 复制到php/ext 文件夹。

        4) 删除 ';'来自 php.ini 中的 ;extension=php_ssh2.dll 行。如果此行不在您的 php.ini 中,请添加它。

        5) 重启 Apache

        【讨论】:

        • 在 xampp 上,我必须将 libssh2.dll 复制到 C:\xampp\php 文件夹,但是当我运行脚本时。 xamp 停止工作。
        • 将扩展DLL文件放在PHP的“ext”子文件夹中,它所属的位置。
        • libssh2.dll 不在下载文件中!我应该从哪里得到它?
        【解决方案8】:

        首先,您的问题揭示了两个误解:

        1. Requirements 部分实际上是这样说的:

          需要 » OpenSSL 和 » libssh2 库。确保 安装了开发库,其中一个典型的包名 可能是 openssl-dev。

          这里不是在讨论 PHP 扩展,而是在讨论与 PHP 无关的第三方库。

        2. extension=php_ssh2.dll 要求您在 PHP 的 ext 目录中确实有一个名为 php_ssh2.dll 的文件,而您可能没有它,主要是因为它没有与 PHP 捆绑在一起。

        如果我们查看Installation 章节,我们可以看到 SSH2 是一个 PECL 扩展。有一些说明链接,但我可以总结一下重要信息:

        • 您需要一个与您的 PHP 安装相匹配的 php_ssh2.dll 文件。
        • PHP 团队和 PECL 团队均未分发此类文件。
        • 在 Windows 上安装 PECL 扩展很困难。您需要下载 C 源代码,获取 C 编译器并自己制作文件,或者找到已经为您完成的人。

        也就是说,除非您在 Google 上搜索 php_ssh2.dll 并找到相关内容,否则您可能运气不佳。

        【讨论】:

        • 我的服务器上有 php_ssh2.dll,我在这里下载了它:php.net/releases/#5.2.6 >> PECL 5.2.6 Win32 二进制文件
        • 也许您可以建议我另一种通过 PHP 使用密钥进行 SFTP 的方法?
        • @LaYle - 你在使用 PHP/5.2.6 吗?
        • @LaYle - 似乎已经有很多问题了。这个answer 表明 PHP 有内置支持:-?
        • 不管怎样,php_ssh2 的 Windows 版本都可以在 windows.php.net/downloads/pecl/releases/ssh2 获得。