web-dev-qa-db-ja.com

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フォルダーはどこに置く必要がありますか? phpseclibが含まれるように、phpファイルにどの行を追加する必要がありますか?

12
Diego

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が見つからないというエラーをスローしなくなりました。

0
Diego

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 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);
}
8
Krishna

PEARをインストールするヒントをくれたDiegoに感謝します。私はそれを次の手順で機能させました:

まず、 [〜#〜] 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 で解決策を得ました。

2
KnockDown

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
neubert