【问题标题】:PHP startup: Unable to load dynamic library php_ssh2PHP启动:无法加载动态库php_ssh2
【发布时间】:2014-11-03 16:03:04
【问题描述】:

我正在尝试在 wamp 上安装 php_ssh2 扩展。 我做以下事情:

  1. 将 libssh2.dll 复制到 C:\Windows\SysWOW64
  2. 注册dll文件:Regsvr32 libssh2.dll
  3. 将php_ssh2.dll复制到C:\wamp\bin\php\php5.5.12\ext
  4. 在 php.ini 中添加扩展行

我收到了消息:

希望有人知道帮忙!
提前致谢

【问题讨论】:

  • 您使用的是 32 位还是 64 位的 WampServer?
  • 我使用的是 64 位 WampServer

标签: php dll ssh wamp wampserver


【解决方案1】:

libssh2 是一个 PITA。我只是使用 phpseclib 的 libssh2-compatibility-layer:

https://github.com/phpseclib/libssh2-compatibility-layer

例子:

<?php
include('phpseclib.php');

$ssh = ssh2_connect('www.domain.tld');
echo ssh2_fingerprint($ssh);

基本上,它只是使用 phpseclib 来模拟所有的 ssh2_* 函数。

【讨论】:

    【解决方案2】:

    libssh2.dll 不需要对它进行所有这些操作。

    作为使用 WAMPServer 时的简单经验法则,无需将任何内容放入 C:\windows\.... 文件夹。如果你这样做了,你就破坏了通过点击链接来切换 Apache/PHP/MySQL 版本的能力,这毕竟是使用 WAMPServer 而不是其他类似产品的主要原因之一。

    如何将 SSH2 PHP 扩展安装到 WAMPServer。

    下载SSH2扩展from here

    • 单击 Windows 图标旁边的“DLL”一词以访问 Windows 版本。

    对于 WAMPServer,您将需要 TS(线程安全)版本 下载与您的 WAMPServer 匹配的线程安全版本,即 32 位/64 位,以及您想要安装的 PHP 的主要版本,即 PHP5.4 或 PHP5.5 等。

    如果您在 64 位 Windows 上运行 32 位 WAMPServer,您应该使用 32 位 (x86) 版本的 ssh2!

    使用wampmanager,停止所有服务

    wampmanager -&gt; Stop all Services

    从 zip 中提取这 2 个文件(请记住,SSH2 文件特定于 PHP 版本,因此请确保使用正确的 zip 文件)。

    copy libssh2.dll to \wamp\bin\php\phpx.y.z\
    copy php_ssh2.dll to \wamp\bin\php\phpx.y.z\ext
    

    编辑 php.ini(使用 wampmanager 菜单)

    wampmanager -&gt; PHP -&gt; php.ini

    找到包含扩展参数的部分并添加此行

    extension=php_ssh2.dll
    

    如果您使用的是 WAMPServer 2.5.15 或更高版本,您可以跳过此下一步,因为它已被合并到 WAMPServer 刷新过程中。

    如果您使用的是 WAMPServer 2.5 或更早版本:

    编辑 \wamp\scripts\config.inc.php 找到文件的这一部分,

    $phpDllToCopy = array (
    

    并将这一行添加到数组中,它可以在该列表中的任何位置

    $phpDllToCopy = array (
        'libssh2.dll',
    

    重新启动所有服务

    wampmanager -> Start all Services 
    

    看看

    wampmanager -> PHP -> PHP Extensions
    

    您应该在列表中看到 php_ssh2,旁边有一个勾号。

    现在您需要让 WAMPManager 将 SYMLINKS 重建到 \apachex.y.z\bin 文件夹中。所以使用 wampamanager 菜单做:

    wampmanager -> Apache -> Version -> 2.4.9    
    
    ( click on the version number, it may or may not be 2.4.9 )
    

    这应该需要几秒钟,然后您就可以测试 ssh2 是否已加载。

    现在启动本地主机

    wampmanager -> localhost
    

    在主页上,您应该会在Loaded Services 列表中看到ssh2

    点击 WAMPServer 主页上的phpinfo() 链接,您应该会看到以下信息证明 SSH2 已加载

    现在,如果您想在命令行 (PHP CLI) 中使用 PHP 的 SSH2,那么您还需要做一件事。

    编辑\wamp\bin\php\php{版本}\php.ini

    找到包含扩展参数的部分并添加此行

    extension=php_ssh2.dll
    

    你已经完成了。

    【讨论】:

    • 感谢您的回答,我正在查看 php_info() -> "Registered PHP Streams",但没有看到以下 ssh2.shell、ssh2.exec、ssh2.tunnel、ssh2.scp、 ssh2.sftp,我只看到 php、file、glob、data、http、ftp、zip、compress.zlib、compress.bzip2、https、ftps、phar
    • 你之前做的所有事情都撤消了吗?您是否获得了与您的PHP 版本匹配的SSH2 的正确版本?您是否删除了libssh2.dll from C:\Windows\SysWOW64 并且未注册即服务?
    • 是的,主要问题是“调用未定义的函数 ssh2_exec”,我认为这是由错误安装引起的。
    • 在仔细查看问题后,我修改了答案。我刚刚对此进行了测试,因此它现在应该是一个完整的解决方案。我希望?
    • 感谢 ssh2 的链接。所有其他答案都有旧链接,我只是找不到 php 7.2 的链接
    猜你喜欢
    • 2019-04-03
    • 2015-03-01
    • 2021-04-03
    • 2020-03-16
    • 2016-11-27
    • 2021-10-05
    • 2020-02-26
    • 2016-10-09
    • 2015-01-07
    相关资源
    最近更新 更多