2013-02-28 5 views
15

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

extension=php_openssl.dll 
extension=php_ssh2.dll 

и перезапустить Apache, но он по-прежнему не работает (Fatal error: Call to undefined function ssh2_connect()).

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

Благодаря

пс: я итальянский, простите за мой английский ...

ответ

0

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

  1. Requirements раздел на самом деле говорит, что это :

    Библиотеки »OpenSSL и» libssh2 не требуются. Убедитесь, что установлены библиотеки разработки , где типичным именем пакета может быть openssl-dev.

    Речь идет не о расширениях PHP, а о сторонних библиотеках, которые не имеют никакого отношения к PHP.

  2. extension=php_ssh2.dll требует, чтобы вы на самом деле есть файл с именем php_ssh2.dll в вашем ext директории PHP, и вы, вероятно, не имеют его, в основном потому, что он не поставляется с PHP.

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

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

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

+0

У меня есть ** php_ssh2.dll ** на моем сервере, я загрузил его здесь: http://www.php.net/releases/#5.2.6 >> PECL 5.2.6 Win32 двоичные файлы – LaYle

+0

Возможно, вы может предложить мне другой метод для SFTP через PHP с ключом? – LaYle

+2

** phpseclib ** http://phpseclib.sourceforge.net может быть решением ... – LaYle

27

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

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

  2. Извлеченные содержание архива и:

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

    C:\> regsvr32 libssh2.dll 
    
  4. перезапущен Apache.

Конечная нота

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

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

+1

Я пытаюсь настроить это для использования в командной строке с Phing. Следуя инструкциям, 'php -i' говорит, что поддержка SSH2 включена, однако попытка запустить задачу Phing заканчивается сообщением Windows о сбое PHP. Любые подсказки по устранению неполадок? – Rarst

+1

Исправлено, обновляя все и все в веб-стек до последних версий. Возможно, некоторые DLL-конфликты или что-то еще. – Rarst

+0

... применяется к системам с версиями PHP 5.3.27 и PHP 5.4.15. Работал безупречно! – Milan

6

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

1) Скачать библиотеку SSH2 PECL из PHP.net.

2) Скопируйте файл libssh2.dll в папку System32.

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

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

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

+0

На xampp мне пришлось скопируйте файл libssh2.dll в папку C: \ xampp \ php, но когда я запустил скрипт. xamp перестает работать. – Muk

+0

Разместите DLL-файл расширения в дополнительной папке «ext» вместо PHP, где он принадлежит. – StanE

7
  1. Место php_ssh2.dll в папке доб
  2. Место libssh2.dll в папке PHP
  3. Restart IIS

, что работа для меня

  • PHP 5.4.25 NTS + Windows Server 2012
+1

Мне лично (в Windows 7) пришлось добавить эти библиотеки на 'C: \ Windows \ SysWOW64' (на 32-битной версии, которая является' C: \ Windows \ System32') –

1

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

1.) Скачать версию конкретных DLL файлов из http://pecl.php.net/package/ssh2/0.12/windows и извлечь файлы

Обратите внимание, что даже если вы в 64 битной версии Windows Скачать версию Потокобезопасной SSH 32 т.е. Потокобезопасный (TS) x86 в соответствии с вашей версии PHP

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

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

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

работал как шарм

Приветствия

+0

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

3

Если вы работаете XAMP 3.2.1 и PHP 5.6.8, это может быть полезным для тебя.

Делайте то, что сказал Алекс б, и загрузить пакет, соответствующий dependindg версию PHP (и бит) с этой страницы (link)

Я скачал и заменил в C: \ XAMPP \ PHP \ внутр и это сработало!

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

+0

Версия DLL версии 5.6 x86 содержит вредоносное ПО. Не знаю о других. – djdy

0

У меня есть wamp с PHP 5.6.25/7.0.10 - Установлен MySQL 5.7.14 и я сейчас работает на PHP 7.0. У меня была такая же ошибка. Я проверил использование phpinfo(), если работали оба библиотекаря OpenSSL и libssh2 (вы можете Google проверить, как это проверить). После того, как я увидел, что они работают, я загрузил 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, используя расширение = php_ssh2.dll.

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

Смежные вопросы