PHPが動いているサーバと別のサーバのファイルをプログラムから読み込んだり書き込んだりするには一般的にどのような方法があるのでしょうか。
読み書きしたいサーバにはふだんSSHクライアントなどからアクセスしてファイル内容を参照したりしています。その際パスフレーズなどが求められますが、プログラムから(そのサーバの)ファイルを参照したり書き込んだりする場合にもSSH経由での認証が必要だったりするのでしょうか。
まず後ろの方から。
書き込むときは、SSH経由での認証(またはその他プロトコルでの認証ログイン)が必要です。
パスワードなしで誰でもサーバに書き込めたら、セキュリティ的にやばいですもんね。
参照だけの場合でも、そのデータをみるのにパスワードが必要だったりゲストの読み取り権限が無い場合は必要です。
PHPでSSH通信をする場合はssh2関数を使えばできます。
http://jp2.php.net/manual/ja/book.ssh2.php
同様にftpもPHPから使用することが出来ます。
http://jp2.php.net/manual/ja/book.ftp.php
php.iniの設定を少ししないといけない…かな?
これはPHPが別サーバのファイルを操作する場合です。
PHPと操作するファイルが同じサーバの場合は認証をしなくてもいけるケースがあります。
別サーバに情報を蓄える、読み出す、というのは一般的にはデータベースを使っていますね。mysqlでつなぐとか。簡単なので。
もちろんSSHのsftpやftpでつなぐのもありかと思います。
うーん、PHPでsshコマンドを実行するということは通常はあまりやりませんね。
あえて必要になる場合はパスフレーズ無しの公開鍵認証を使えばパスワードの入力とかは不要で無人で実行できますよ。
それよりもデータのやりとりだけなら、通常は以下のような手段等がまず考えられます。
・NFSでリモートサーバのディレクトリをマウントしてファイルを読み書きする
・データの形によりますがDBサーバでよければリモートに繋ぐのは良くあること
・リモートサーバ側にデータをやりとりするWEBAPI等を作成してそれ経由でデータのやりとりをする
いろいろ方法がありますね。検討してみます。
ありがとうございます
fopen/fclose での読み書きということであれば、ご利用のPHP環境がサポートしているプロトコル/ラッパーによります。
上記リンクにある通り、PHP環境がサポートしていれば、SSH2によるアクセスは可能です。
その他、以下のプロトコルが利用できます。
読み書きしたいサーバが同一LAN上にあるのであれば、ファイルシステムを利用するのが最も簡単です。
リモートにある場合は、FTPS を使うことがあります。
ファイルシステムでいくか、もしくはFTPSの方法について調べてみたいと思います。
ありがとうございました。
DBを使う方法も検討しています。
いろいろ整理できました。ありがとうございます