私は自分のマシンに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ファイルにどの行を追加する必要がありますか?
PEARをインストールすることで動作しました このガイド
上記のガイドに従って、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
が見つからないというエラーをスローしなくなりました。
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);
}
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 で解決策を得ました。
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ブランチを使用している場合、これはさらに重要であることに注意してください。