Я запускаю 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/ ):
остановка sudo apachectl
так что Xampp работал.
sudo port установить 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
ruby -e "$ (curl -fsSL https://raw.github.com/mxcl/homebrew/go/install )"
варить установку autoconf
$ sudo pecl install ssh2-0.12
с "/ opt / local" в качестве префикса
/ Применение / XAMPP / xamppfiles / и т.д.
добавив строку:
расширение = / Opt / местные / Библиотека / php54 / расширения / нет-отлаживать-не-ЗТС-20100525 / ssh2.so
II. Скомпилируйте ssh2.so из терминального метода (ссылка: комментарий zizifu http://www.php.net/manual/en/ssh2.installation.php ):
./configure
делать
сделать установку
phpize
./configure –with-ssh2
делать
сделать установку
Извините, если у этого слишком много деталей, надеюсь, информация, которую я дал, может указывать на то, что я делаю неправильно; Я был бы очень признателен за любое решение / подсказку / вещь, чтобы попытаться решить эту проблему.
Вы рассматривали 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'); ?>