Как установить 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
не может быть найден.