如何安装 phpseclib?
How to install phpseclib?
我已经在我的 machine 上安装了 Apache,所以我可以将本地主机用作 PHP 服务器。这样可行。现在我正在尝试使用 PHP 通过 SFTP 将文件发送到另一台服务器。我环顾四周,发现 phpseclib 被推荐。我似乎不知道如何安装 phpseclib。以下是网站给出的台词:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SFTP.php');
You have to set the include path.
我明白这些词的意思,但我无法让它发挥作用。我正在使用 mac。我的服务器在 /Users/diego/Sites/
。我到底需要把 phpseclib
文件夹放在哪里?我需要在我的 php 文件中加入哪些行才能包含 phpseclib
?
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 分支,这将更加重要。
我通过安装 PEAR 使其正常工作,遵循 this guide.
按照上面的指南,我发现 apache2 正在我的 /etc/
文件夹中寻找 php.ini
。但是我运行遇到了问题。在我的 /etc/
文件夹中没有 php.ini
文件。但是有php.ini.defualt
。所以我把'saved as'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
的错误。
感谢 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
中找到。你必须修改这个文件。
突然,我测试了新的库。但是我得到了一堆错误,就像 中描述的那样。
对于那个问题,我在 Whosebug post.
中找到了解决方案
我尝试在 linux machine 上安装 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端口执行以下命令
sudo port -v 自我更新
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 执行以下命令。
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);
}
我已经在我的 machine 上安装了 Apache,所以我可以将本地主机用作 PHP 服务器。这样可行。现在我正在尝试使用 PHP 通过 SFTP 将文件发送到另一台服务器。我环顾四周,发现 phpseclib 被推荐。我似乎不知道如何安装 phpseclib。以下是网站给出的台词:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SFTP.php');
You have to set the include path.
我明白这些词的意思,但我无法让它发挥作用。我正在使用 mac。我的服务器在 /Users/diego/Sites/
。我到底需要把 phpseclib
文件夹放在哪里?我需要在我的 php 文件中加入哪些行才能包含 phpseclib
?
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 分支,这将更加重要。
我通过安装 PEAR 使其正常工作,遵循 this guide.
按照上面的指南,我发现 apache2 正在我的 /etc/
文件夹中寻找 php.ini
。但是我运行遇到了问题。在我的 /etc/
文件夹中没有 php.ini
文件。但是有php.ini.defualt
。所以我把'saved as'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
的错误。
感谢 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
中找到。你必须修改这个文件。
突然,我测试了新的库。但是我得到了一堆错误,就像
我尝试在 linux machine 上安装 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端口执行以下命令 sudo port -v 自我更新 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 执行以下命令。 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);
}