2015-05-28 2 views
8

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

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

Вы должны установить включают путь.

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

ответ

0

Я получил это работает путем установки PEAR, после this guide.

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

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

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

2

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

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

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

1

Спасибо Диго за подсказку для установки PEAR. Я получил его работу со следующими этапами:

Сначала установите PEAR.

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

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

$ sudo apt-get install wget 

После успешной установки PEAR, настроить его с этим guide.

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

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

3

Я попытался установить 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, используя макинтош порт выполнить следующую команду 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, используя самодельный выполнить следующую команду. brew install 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); 
} 
Смежные вопросы