如何为PHP 7.3安装ssh2

时间:2019-07-26 10:06:52

标签: php docker pecl libssh2

当尝试通过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

当我第一次搜索Google时,我发现this question未得到回答,并暂停了超级用户。我认为它更适合这里。

2 个答案:

答案 0 :(得分:1)

关于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替代,以其他方式注册变量。

答案 1 :(得分: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-在沼泽中重新启动所有服务