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