PHP にはファイル システム関連の関数が多数あり、ファイルを開くだけでなく、ディレクトリの内容の表示やファイルの移動などにも役立ちます。 PHP を使用して Web ベースのファイル マネージャーを作成した人もたくさんいます。
まず、ファイル パスについて注意してください。Windows ではファイル パスにスラッシュ「/」またはバックスラッシュ「\」を使用できますが、他のオペレーティング システムでは「/」のみが使用されます。互換性の理由から、次の例では「/」表現を使用しています。
次の単純なスクリプトは、基本的なディレクトリのリストを表示します。コード内にコメントがあり、各ステップを説明します。
<? /* 変数にアクセスしたいディレクトリへのフルパスを指定します。
$dir_name = /home/me/;
/* ハンドルを作成して結果を開きます。指定されたディレクトリの * /
$dir = opendir($dir_name);
/* リスト要素 (ファイル名) が配置される場所にテキストの追加を開始します */
$file_list = <ul>
; while ステートメントを使用して、開いたディレクトリのすべての要素を読み取ります。ファイル名が「.」でも「..」でもない場合は、ファイル名をリストに出力します */
while ($file_name = readdir($dir)) {
if (($file_name != .) && ($file_name != ..)) {
$file_list .= <li>$file_name;
}
}
/* リストを完成させます*/
$file_list .= </ul>
/* 開いているディレクトリハンドルを閉じて、PHP コードセグメントを終了します*/
Closedir($dir)
?>
<!-- HTML を開始します -->;
<HTML>
<頭>
<TITLE>ディレクトリ一覧</TITLE>
</ヘッド>
<ボディ>
<!-- PHP を使用して、読み取ったディレクトリの名前を出力します -->
<P>内のファイル: <? echo $dir_name;
<!-- PHP を使用してディレクトリのリストを出力します -->
<? エコー $ファイルリスト ?>
</BODY>
</HTML>
この時点で、ディレクトリリストはすでに存在します。ディレクトリまたはファイル (すぐに参照します) の内容を読み取るには、ユーザーが配置されている PHP 実行プラットフォームに少なくともディレクトリまたはファイルに対する読み取り権限が必要であることに注意してください。
次の例は、ファイルをコピーする方法を示しています。
<? /* コピーするファイルのパスを変数 $original に入れ、コピーするターゲットのパスを変数 $copied に入れます */
$original = /home/me/マイデータベースダンプ;
$copied = /archive/mydatabasedumo_1010;
/* 関数 copy() を使用してソース ファイルを宛先にコピーするか、エラー メッセージを出力して終了します*/
@copy($original, $copied) または die(Couldn't copy)ファイル.);
?>
サンプル スクリプトは、システムをバックアップするための最初のステップです。スクリプトを実行すると、セキュリティ上の理由から、まずデータベースが別の場所にコピーされます。 crontab を変更すると、ユーザーの介入なしに、選択した時間にこのファイルを実行できます。
Lynx がすでにシステム上にあると仮定すると、Lynx を実行してファイルにアクセスするための crontab エントリを作成できます。ファイルにアクセスすると、スクリプトが実行され、ファイルのコピーが作成されます。次の例では、午前 5 時にスクリプトを実行し、Lynx をシャットダウンします:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
PHP CGI バージョンを実行している場合は、Lynx 部分をスキップしてバイナリを参照できます:
0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1