Инсталиране на 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 спре

така че Xampp да работи.

  • изпълни командата:

sudo порт инсталирайте libssh2

тъй като библиотеките libssh2 и openssl са предпоставка за използване на ssh2_connect в php (справка: http://www.php.net/manual/en/ssh2.requirements.php); openssl изглежда вече е инсталиран на Xampp според phpinfo().

  • инсталиран Pear:

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

  • инсталиран Homebrew (в противен случай командите „pecl install“ са неуспешни):

ruby -e $(curl -fsSL https://raw.github.com/mxcl/homebrew/go/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 от GUI, който идва с 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