Как установить phpseclib?

Я установил Apache на свою машину, чтобы я мог использовать localhost в качестве PHP-сервера. Эта работа. Прямо сейчас я пытаюсь использовать PHP для отправки файлов через SFTP на другой сервер. Я немного огляделся и увидел, что phpseclib был рекомендован. Я не могу понять, как установить phpseclib. Вот строки, которые дал сайт:

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SFTP.php');

вы должны установить пути.

Я понимаю, что означают эти слова, но я не смог его получить рабочий. Я использую mac. Мой сервер находится в /Users/diego/Sites/. Где именно мне нужно поставить ? Какие строки Мне нужно поместить в мой php-файл, чтобы phpseclib включен?

4 ответов


Я попытался установить phpseclib на linux-машине. Для меня это сработало идеально. Надеюсь, вам нужна аналогичная конфигурация на вашем Mac.

на сервере linux выполните следующую команду.

sudo apt-get install php5-pgsql php-pear
sudo pear channel-discover phpseclib.sourceforge.net
sudo pear remote-list -c phpseclib
sudo pear install phpseclib/Net_SSH2
sudo service apache2 restart

на Mac с помощью порта mac выполните следующую команду порт sudo-V selfupdate sudo порт установки php54-ssh2

#add this to the php.ini file /etc/php.ini, it can be placed at the end of the file
extension=/opt/local/lib/php54/extensions/no-debug-non-zts-20100525/ssh2.so
sudo /usr/sbin/apachectl restart

на Mac с помощью homebrew выполните следующую команду. завариваем установку php54-ssh2

загрузите библиотеку phpseclib и включите в каталог проекта.

в соответствующий файл php добавить следующий код.

include('phpseclib1.0.5/Net/SFTP.php');

set_include_path(get_include_path().PATH_SEPARATOR.'phpseclib');
define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);

$sftp = new Net_SFTP('555.55.55.55', 22);

if(!$sftp->login('username', 'password')) {
    echo $sftp->getSFTPLog();
    die('Login failed!');
} else {
    echo $sftp->pwd();
    echo $upload = $sftp->put('/sftp/'.$filename, $uploadedfile, NET_SFTP_LOCAL_FILE);
}

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); добавит phpseclib в качестве относительного пути. Так делать include('Net/SFTP.php') будет phpseclib/Net/SFTP.php но это относительно того, что ваш рабочий каталог.

PEAR часто имеет абсолютный путь в include_path. Так что ты можешь попробовать. Поместите phpseclib в некоторый каталог (prob вне корня документа), а затем поместите этот каталог в свой include_path.

обратите внимание, что это имеет большее значение, если вы загрузили phpseclib из sourceforge.net или если ты на ветке 1.0.


спасибо, Диего, за подсказку по установке груши. Я заставил его работать со следующими шагами:

во-первых, установить груша.

$ wget http://pear.php.net/go-pear.phar
$ php go-pear.phar

если команды wget не работает, пожалуйста, установите этот пакет, чтобы заставить его работать.

$ sudo apt-get install wget

после успешной установки PEAR настройте его с помощью этого руководство.

на php.ini файл, можно найти в /etc/php5/apache2. Вы должны изменить этот файл.

внезапно я проверил новую библиотеку. Но вместо этого я получил кучу ошибок, как в этом сообщение stackoverflow описал. Для этого вопроса я получил решение для него, в этом сообщение stackoverflow.


я получил его работу, установив PEAR, следуя в этом руководстве.

следуя приведенному выше руководству, я понял, что apache2 искал php.ini в своем . Но я столкнулся с проблемой. В моем /etc/ папки не было . Но там было php.ini.defualt. Поэтому я "спас как"php.ini.default to php.ini а затем изменил include_path.

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
include_path = ".:/Users/diego/pear/share/pear:/php/includes"

PHP больше не бросает ошибку, говоря, что phpseclib не может быть найден.