PHP Установите SSH2 на машину с Windows

Я пытаюсь установить это на Windows+Apache машине. В документации сказано, что для SSH2 требуются библиотеки OpenSSL и libssh2. Я добавил эти строки в свой файл php.ini:

extension=php_openssl.dll
extension=php_ssh2.dll

и перезапустил Apache, но он все еще не работает (Fatal error: Call to undefined function ssh2_connect()).

Может ли кто-нибудь объяснить мне, как установить этот сервис?


person LaYle    schedule 28.02.2013    source источник


Ответы (8)


Вот как я это сделал:

  1. Загружено расширение Win32 SSH2 PECL из здесь (выберите соответствующую версию) ;

  2. Распаковал содержимое архива и:

    • placed php_ssh2.dll and php_ssh2.pdb files in the ext folder (e.g. C:\php\ext);
    • скопировал libssh2.dll файл в C:\Windows\system32 и (если у вас Win64) C:\Windows\SysWOW64 папку(и);
  3. Выполните следующую команду, чтобы зарегистрировать DLL:

    C:\> regsvr32 libssh2.dll
    
  4. Перезапустил Апач.

Последнее примечание

Если у вас есть PHP x64, вам нужно найти x64-версию библиотеки / DLL SSH2. Этот сайт предлагает несколько скомпилированных под Win64 библиотек для PHP. Сначала попробуйте здесь.

Надеюсь это поможет.

person Alex B    schedule 10.05.2013
comment
Я пытаюсь настроить это для использования командной строки с Phing. Выполнил ваши инструкции, php -i говорит SSH2 support enabled, однако попытка запустить задачу Phing заканчивается сообщением Windows о сбое PHP. Любые подсказки, как устранить неполадки? - person Rarst; 29.05.2013
comment
Решено путем обновления всего и вся в веб-стеке до последних версий. Вероятно, какой-то конфликт DLL или что-то в этом роде. - person Rarst; 29.05.2013
comment
...применимо к системам с версиями PHP 5.3.27 и PHP 5.4.15. Работал безупречно! - person Milan; 22.03.2014
comment
Я использую PHP 5.6, и мне, вероятно, не повезло, нет .dll для загрузки, а vc11 несовместим. - person Christian; 10.10.2016
comment
@Christian: Мне это тоже нужно с PHP5.6 ... если вы что-то придумаете, ПОЖАЛУЙСТА, дайте нам знать :) - person Metal450; 11.10.2016
comment
Для PHP 7.1 мне нужно было получить из этого места: pecl.php.net/ package/ssh2/1.1.2/windows (поточно-ориентированная версия). Я скопировал эти файлы в свой каталог php/ext, как описано в этом ответе. Попытка запустить regsvr32 у меня не сработала, но я не уверен, что это вообще было необходимо. Я уже нашел копию libssh2.dll в каталоге php. - person Richard; 16.05.2019

Если у кого-то возникли проблемы с установкой SSH2, вот как я это сделал:

1) Загрузите библиотеку SSH2 PECL с PHP.net [выберите подходящую версию].

2) Скопируйте libssh2.dll в папку System32 [x86] или SysWOW64 [x64].

3) Скопируйте php_ssh2.dll и php_ssh2.pdb в папку php/ext.

4) Удалить ';' из строки ;extension=php_ssh2.dll в php.ini. Если этой строки нет в вашем php.ini, добавьте ее.

5) Перезапустите Apache.

person user2893097    schedule 18.10.2013
comment
В xampp мне пришлось скопировать libssh2.dll в папку C:\xampp\php, но когда я запускаю скрипт. хамп перестает работать. - person Mukesh; 13.05.2015
comment
Вместо этого поместите файл DLL расширения в подпапку ext PHP, где он принадлежит. - person StanE; 05.08.2016
comment
libssh2.dll нет в файлах загрузки! где я должен получить его? - person Morteza Hasanabadi; 20.05.2020

  1. Поместите php_ssh2.dll в папку ext
  2. Поместите libssh2.dll в папку php
  3. Перезапустить IIS

это работает для меня

  • PHP 5.4.25 NTS + Windows Server 2012
person MrTeChId    schedule 17.07.2014
comment
Мне лично (в Windows 7) пришлось добавить эти библиотеки в C:\Windows\SysWOW64 (в 32-битной версии это C:\Windows\System32 ) - person jave.web; 09.02.2016

Если вы используете xamp 3.2.1 и PHP 5.6.8, это может быть вам полезно.

Сделайте то, что сказал alex b, и загрузите пакет, который соответствует вашей версии php (и битам), с этой страницы (ссылка)

Я скачал и заменил в C:\xampp\php\ext, и это сработало!

Надеюсь, это поможет, с уважением.

person Cristian B.    schedule 21.11.2016
comment
Версия библиотеки DLL 5.6 x86 содержит вредоносное ПО. Не знаю о других. - person djdy; 02.08.2017

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

php_ssh2 (расширение): http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

В версиях до 5.5 уже есть libssh2.dll (из второй ссылки)

person lodev09    schedule 16.07.2014

У меня есть wamp с PHP 5.6.25/7.0.10 — установлена ​​MySQL 5.7.14, и в настоящее время я работаю над PHP 7.0. У меня была такая же ошибка. Я проверил с помощью phpinfo(), работают ли обе библиотеки OpenSSL и libssh2 (вы можете погуглить, как это проверить). Убедившись, что они работают, я скачал php_ssh2.dll по адресу http://pecl.php.net/package/ssh2/1.0/windows (также можно найти http://windows.php.net/downloads/pecl/releases/ssh2/ ) для версии 7.0 поместите его в папку php\ext. Затем я включил его в файл php.ini, используя extension=php_ssh2.dll.

Затем он появился в phpinfo(). И это сработало. Надеюсь, поможет.

person Maks Z.    schedule 30.01.2017

Исправьте, что сработало для меня. Я запускаю xampp v. 3.2.1 apache 2.2, сталкивающийся с той же проблемой, пытался разместить файлы dll в другом месте c:, но потерпел неудачу, в конце концов это помогло.

1.) Загрузите файлы DLL для конкретной версии с http://pecl.php.net/package/ssh2/0.12/windows и извлеките файлы

Обратите внимание, что даже если вы используете 64-разрядную версию Windows, загрузите 32-ю версию THREAD SAFE ssh, т.е. Thread Safe (TS) x86 в соответствии с вашей версией php

2.) Добавьте/замените libssh2.dll в C:\xampp\php (стандартная установка)

3.) Добавьте/замените php_ssh2.dll и php_ssh2.pdb в C:\xampp\php\ext (стандартная установка)

4.) перезапустите сервер апача

Отлично работает

ВАШЕ ЗДОРОВЬЕ

person akashBhardwaj    schedule 07.08.2015
comment
Не могли бы вы сообщить мне, где я могу получить libssh2.dll и php_ssh2.dll для версии: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/7.0.6 на архитектуре x86. Проверка phpinfo.php показывает, что OpenSSL включен. Мне трудно получить правильную dll. Пробовал много, но ни один не работает для меня. Любая помощь будет оценена. - person tejas033; 02.03.2017

Прежде всего, ваш вопрос раскрывает два заблуждения:

  1. #P2# <блочная цитата> #P3# #P4#
  2. extension=php_ssh2.dll требует, чтобы у вас действительно был файл с именем php_ssh2.dll в каталоге ext вашего PHP, и у вас, вероятно, его нет, в основном потому, что он не связан с PHP.

Если мы проверим главу Установка, то увидим, что SSH2 является расширением PECL. . Есть несколько ссылок с инструкциями, но я могу сделать краткое изложение важной информации:

  • Вам нужен файл php_ssh2.dll, соответствующий вашей установке PHP.
  • Ни команда PHP, ни команда PECL не распространяют такой файл.
  • Установка расширений PECL в Windows затруднена. Вам нужно загрузить исходный код C, взять компилятор C и создать файл самостоятельно или найти кого-то, кто уже сделал это за вас.

Сказал, что если вы не погуглите php_ssh2.dll и не найдете что-то подходящее, вам, вероятно, не повезло.

person Álvaro González    schedule 28.02.2013
comment
У меня на сервере есть php_ssh2.dll, я скачал его здесь: php.net/releases/#5.2.6 ›› Двоичные файлы PECL 5.2.6 Win32 - person LaYle; 28.02.2013
comment
Может быть, вы можете предложить мне другой способ SFTP через PHP с ключом? - person LaYle; 28.02.2013
comment
@LaYle - Вы используете PHP/5.2.6? - person Álvaro González; 28.02.2013
comment
@LaYle - кажется, уже есть много вопросов. Этот ответ предполагает, что PHP имеет встроенную поддержку: -? - person Álvaro González; 28.02.2013
comment
Выпуски php_ssh2 для Windows доступны по адресу windows.php.net/downloads. /pecl/релизы/ssh2. - person Sebastian Zartner; 13.12.2017