如何安装phpseclib?

时间:2015-05-28 19:41:32

标签: php install 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/。我需要在哪里放置phpseclib文件夹?我需要在php文件中添加哪些行才能包含phpseclib

4 个答案:

答案 0 :(得分:7)

我尝试在linux机器上安装phpseclib。它对我来说很完美。我希望你的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 port执行以下命令     sudo port -v selfupdate     sudo port install 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执行以下命令。     brew安装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);
}

答案 1 :(得分: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。

请注意,如果您从sourceforge.net下载了phpseclib,或者如果您在1.0分支上,这就更重要。

答案 2 :(得分:2)

感谢Diego,提示安装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 :(得分:0)

我通过在this guide.

之后安装PEAR来实现它

按照上面的指南,我发现apache2正在我的php.ini文件夹中查找/etc/。但是我遇到了一个问题。在我的/etc/文件夹中,没有php.ini个文件。但是有php.ini.defualt。所以我被保存为' php.ini.defaultphp.ini,然后修改了include_path。

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

PHP不再抛出错误,指出无法找到phpseclib