【PHP】外部サーバーディレクトリ内にあるファイルの一覧を取得する

この記事について

環境PHP
目的外部サーバーのディレクトリ内にあるファイルの一覧を取得する
結果fopen で Apache のディレクトリ一覧表示を読む方法にした

つまずきポイント要約

  • readdir はローカルネットワーク内しか見られない
  • ディレクトリ一覧のブラウザ表示を許可する必要があるのでセキュリティ的には注意

PHP の readdir 関数はローカルネットワーク内のフォルダにしかアクセスできない。

外部サーバーにあるディレクトリ内ファイルの一覧を取得するには、fopen 関数を使用するといい。

//urlをひらく。ブラウザでフォルダにアクセスした際、
//フォルダ一覧が見られるApacheの機能を利用。
$fp = @fopen(フォルダのパス, 'r');

 while ( !feof($fp) ) {

 $row = fgets($fp, 1024);

 //ファイル名抽出処理。

}
fclose($fp);

ただし、↑だとブラウザからのフォルダ一覧の表示も許可しなければいけないので、セキュリティ的にはよくない。

fopen は、FTP をサポートしているので ftpサーバーに対してなら ftp_nlist() で取得することも可能か?後日検証。

検索されるファイルが置かれているサーバーにファイルを一覧出力するプログラム(phpファイル)を置いて、その結果を受け取りサーバーで取得する方法もある。その場合、ファイル一覧を取得したいフォルダが複数あって実行のつどフォルダを指定したい場合、フォルダの数だけプログラムが必要か?

参考ページ
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113905041

タイトルとURLをコピーしました