Установка SSH2 для PHP для работы на сервере Xampp Apache в OSX 10.9.1

Я запускаю Xampp на Mac с OS X 10.9.1 и пытаюсь разработать веб-страницу, которая вызывает скрипт PHP через вызов Ajax. Xampp используется здесь для целей разработки и не предназначен для формирования серверной части онлайн-страницы.

Сценарий PHP должен подключаться через ssh к удаленному компьютеру, поэтому я
планирую использовать библиотеку ssh2. Когда я пытаюсь запустить команды:

$ connection = ssh2_connect ('my.remote.machine.address', 5432);

Я получаю следующую ошибку:

Неустранимая ошибка: вызов неопределенной функции ssh2_connect () в /Applications/XAMPP/xamppfiles/htdocs/Project/getdata.php в строке 8

и, вызвав 'phpinfo ()', похоже, что ssh2 не установлен. Мне удалось успешно использовать ssh2_connect в Windows, Ubuntu и Scientific Linux, и через неделю я не могу понять, что я делаю неправильно в OSX. Я подозреваю, что может быть проблема со сломанными путями или взаимодействием с Apache. с сервером OSX. Вот что я пробовал:

I. Метод MacPorts и PECL (ссылка: http://lassebunk.dk/2011/05/26/installing-ssh2-for-php-on-mac-os-x/):

  • вещи уже на моем компьютере: xcode (из iStore), MacPorts (установщик со своего сайта), PHP 5.4.17 и, по-видимому, сервер Apache, который поставляется с OSX, с которым мне пришлось остановиться:

sudo apachectl stop

чтобы работал Xampp.

  • выполнила команду:

sudo порт установить libssh2

поскольку библиотеки libssh2 и openssl являются предварительными условиями для использования ssh2_connect в php (ссылка: http://www.php.net/manual/en/ssh2.requirements.php); openssl, по-видимому, уже установлен на Xampp согласно phpinfo ().

  • установлено Груша:

sudo php /usr/lib/php/install-pear-nozlib.phar

  • установлен Homebrew (в противном случае команды pecl install не работают):

рубиновый -e $ (curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)

  • побежал:

brew install autoconf

  • теперь я наконец смог бежать:

$ sudo pecl установить ssh2-0.12

с префиксом / opt / local

  • теперь у меня есть хороший файл ssh2.so, который я добавляю в соответствующий php.ini:

/ Приложения / XAMPP / xamppfiles / и т. Д.

добавив строку:

расширение = / opt / local / lib / php54 / extensions / no-debug-non-zts-20100525 / ssh2.so

  • перезапустил веб-сервер Xampp Apache из графического интерфейса, поставляемого с Xampp, но ssh2 не был найден.

II. Скомпилируйте ssh2.so из метода терминала (ссылка: комментарий zizifu http://www.php.net/manual/en/ssh2.installation.php):

./configure

сделать

сделать установку

phpize

./configure --with-ssh2

сделать

сделать установку

  • снова получил файл ssh2.so, добавил его в соответствующий php.ini, перезапустил сервер, но он по-прежнему не работает.

Извините, если здесь слишком много деталей, надеюсь, предоставленная мной информация может указать на то, что я делаю неправильно; Я был бы очень признателен за любое решение / подсказку / вещь, чтобы попытаться решить эту проблему.


person Mona Paun    schedule 23.12.2013    source источник


Ответы (1)


Рассматривали ли вы phpseclib, чистую реализацию PHP SSH2? У него есть ряд преимуществ перед libssh2, включая улучшенную переносимость и скорость. Пример:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
person neubert    schedule 23.12.2013
comment
Я слышал об этом другом варианте и попробую, прежде чем делать что-нибудь более радикальное. Другие вещи, которые я рассматриваю, - это переключить Xampp на что-то еще или просто реализовать проект в Windows или Ubuntu, хотя отсутствие возможности установить библиотеку, которую я использую в проекте, в популярной ОС было бы плохо. А пока я буду пытаться заставить ssh2 работать в любом случае на стороне, чтобы не оставлять вопрос без ответа. - person Mona Paun; 23.12.2013