この記事について
| 環境 | 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
