Как установить ssh2 для php 7.3

При попытке установить расширение ssh2 через pecl я сталкиваюсь с приведенными ниже сообщениями об ошибках. Я использовал контейнер докеров на основе php:7.3.2-fpm

Действия для воспроизведения:

  • Установите PHP 7.3.2
  • Установите пакеты libssh2-1-dev и libssh2-1
  • Попробуйте установить расширение ssh2 через pecl install ssh2-1.1.2

Итак, как я могу успешно установить расширение 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

Я нашел этот вопрос без ответа и отложил superusers, когда я впервые погуглил об этом. Мне кажется, здесь больше подходит.


person Marco    schedule 26.07.2019    source источник


Ответы (2)


На bugs.php.net существует отчет, где пользователь goldorakhong прокомментировал компиляцию из исходников.

С помощью файла докера это можно сделать так:

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-php-ext-enable, чтобы зарегистрировать переменную как-то иначе.

person Marco    schedule 26.07.2019
comment
Это очень самоуверенно, но я рекомендую phpseclib вместо ssh2. Его можно установить через composer. Нет необходимости в PEAR или компиляции. Также ssh2 постоянно выдавал мне segfault и хуже при использовании ssh2.sftp://-обертки. - person Marco; 31.07.2019
comment
Почему скрипт build.sh в каталоге .travis СОЗДАЕТ НОВОГО ПОЛЬЗОВАТЕЛЯ и дает ему доступ по ssh на сервере? Это не кажется хорошей идеей и не кажется необходимым. Есть ли этому какое-то разумное объяснение? - person JohnGalt; 14.04.2020

Виндовс 2008 Р2 64 бит

Вампсервер 3.1.9 64 бит

PHP 7.3.12

1 - Загрузите php_ssh2.dll и php_ssh2.pdb с https://windows.php.net/downloads/pecl/releases/ssh2/

2 - Выберите 18.09.2019 11:50 1.2

3 — Выберите 18.09.2019 10:45 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 перезапустить все службы

person toprawa    schedule 27.11.2019