如何为 PHP 7.3 安装 SSH2

4
当尝试通过pecl安装ssh2扩展时,我遇到了以下错误消息。我正在使用基于php:7.3.2-fpm的docker容器。
重现步骤: - 安装PHP 7.3.2 - 安装包libssh2-1-devlibssh2-1 - 尝试通过pecl install ssh2-1.1.2安装ssh2扩展
那么我该如何成功安装ssh2扩展呢?
...

/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c: In function 'php_ssh2_fopen_wrapper_tunnel':
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1265:42: error: invalid operands to binary == (have 'zend_string {aka struct _zend_string}' and 'int')
  if (resource->path && resource->path[0] == '/') {
                        ~~~~~~~~~~~~~~~~~ ^~
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1268:8: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
   host = resource->path + 1;
        ^
Makefile:196: recipe for target 'ssh2_fopen_wrappers.lo' failed
make: *** [ssh2_fopen_wrappers.lo] Error 1
ERROR: `make' failed

我在首次搜索的时候发现了这个问题未得到回答并被放置在超级用户上。我认为它更适合在这里发布。

2个回答

3

bugs.php.net上已有一份报告,用户goldorakhong评论称可以从源代码编译。

可以使用Docker文件来完成此操作:

RUN cd /tmp \
    && git clone https://git.php.net/repository/pecl/networking/ssh2.git \
    && cd /tmp/ssh2/ \
    && .travis/build.sh \
    && docker-php-ext-enable ssh2

如果您不使用Docker,则需要替换docker-php-ext-enable以其他方式注册变量。

这是非常主观的,但我推荐使用phpseclib代替ssh2。它可以通过composer安装,不需要使用PEAR或编译。此外,在使用ssh2.sftp://包装器时,ssh2经常会给我带来段错误和更糟糕的问题。 - Marco
为什么在.travis目录中的build.sh脚本会创建一个新用户并在服务器上授予它ssh访问权限?这似乎不是一个好主意,也不必要。这背后是否有合理的解释? - JohnGalt

0

Windows 2008 R2 64位操作系统

Wampserver 3.1.9 64位版本

PHP 7.3.12

1 - 从https://windows.php.net/downloads/pecl/releases/ssh2/下载php_ssh2.dll和php_ssh2.pdb文件

2 - 选择9/18/2019 11:50 AM 1.2版本

3 - 选择9/18/2019 10:45 AM 438049 php_ssh2-1.2-7.3-ts-vc15-x64.zip压缩包

4 - 解压并将php_ssh2.dll和php_ssh2.pdb复制到C:/wamp64/bin/php/php7.3.12/ext/目录下

5 - 在php.ini文件中插入以下内容:extension=php_ssh2.dll

6 - 在wamp中重启所有服务


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接