PHP。サーバー間のディスクI/Oについて

PHPが動いているサーバと別のサーバのファイルをプログラムから読み込んだり書き込んだりするには一般的にどのような方法があるのでしょうか。
読み書きしたいサーバにはふだんSSHクライアントなどからアクセスしてファイル内容を参照したりしています。その際パスフレーズなどが求められますが、プログラムから(そのサーバの)ファイルを参照したり書き込んだりする場合にもSSH経由での認証が必要だったりするのでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/02/25 01:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:tukihatu No.1

回答回数180ベストアンサー獲得回数32

ポイント27pt

まず後ろの方から。

書き込むときは、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でつなぐのもありかと思います。

id:tiritomato

DBを使う方法も検討しています。

いろいろ整理できました。ありがとうございます

2009/02/18 02:35:10
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント27pt

うーん、PHPでsshコマンドを実行するということは通常はあまりやりませんね。

あえて必要になる場合はパスフレーズ無しの公開鍵認証を使えばパスワードの入力とかは不要で無人で実行できますよ。


それよりもデータのやりとりだけなら、通常は以下のような手段等がまず考えられます。

・NFSでリモートサーバのディレクトリをマウントしてファイルを読み書きする

・データの形によりますがDBサーバでよければリモートに繋ぐのは良くあること

・リモートサーバ側にデータをやりとりするWEBAPI等を作成してそれ経由でデータのやりとりをする

id:tiritomato

いろいろ方法がありますね。検討してみます。

ありがとうございます

2009/02/18 08:47:49
id:pahoo No.3

回答回数5960ベストアンサー獲得回数633

ポイント26pt

fopen/fclose での読み書きということであれば、ご利用のPHP環境がサポートしているプロトコル/ラッパーによります。


上記リンクにある通り、PHP環境がサポートしていれば、SSH2によるアクセスは可能です。

その他、以下のプロトコルが利用できます。

  • ファイルシステム(LinuxならNFS、Windowsなら共有ディレクトリ)
  • HTTP と HTTPS
  • FTP と FTPS

読み書きしたいサーバが同一LAN上にあるのであれば、ファイルシステムを利用するのが最も簡単です。

リモートにある場合は、FTPS を使うことがあります。

id:tiritomato

ファイルシステムでいくか、もしくはFTPSの方法について調べてみたいと思います。

ありがとうございました。

2009/02/19 02:07:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません