※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ ファイルやディレクトリ操作の命令
今回はファイルやディレクトリを操作するPHPの命令でよく使いそうなものを解説します。
単純なファイルの読み書きは「PHPの予備知識」−「ファイルの読み書き」で解説しています。
- chmod((ファイル名), (パーミッション))
-
ファイルやディレクトリのパーミッション(属性、権限)を変更することができます。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
※..Windowsでは利用できません。
- chown((ファイル名), (所有者))
-
ファイルやディレクトリのオーナー(所有者)を変更することができます。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
※..Windowsでは利用できません。
- chgrp((ファイル名), (グループ))
-
ファイルやディレクトリのグループを変更することができます。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
※..Windowsでは利用できません。
- rename((旧ファイル名), (新ファイル名))
-
ファイル名を変更する。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
- mkdir((ファイル名), (パーミッション))
-
ディレクトリ(フォルダ)を作成する。
「パーミッション」は省略できます。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
- rmdir((ファイル名))
-
ディレクトリ(フォルダ)を削除する。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
- unlink((ファイル名))
-
ファイルを削除する。
変更が成功した場合、「TRUE」を、失敗した場合「FALSE」を返します。
上記の関数は言葉で説明するよりサンプルを見てもらったほうが解かりやすいと思います。
- 【 解 説 】
-
まず、ファイル名「test.cgi」のパーミッションを「666」に変更するには「chmod」関数を使い次のように記述します。
$rslt = chmod("test.cgi", 0666);
※「0666」の頭「0」は8進数の記述方式ですが、パーミッションの表記法と同じになりますのでこの方法を使うと解かりやすいと思います。ファイル名「test.cgi」の所有者を「atom」に変更するには「chown」関数を使い次のように記述します。
$rslt = chown("test.cgi", "atom");ファイル名「test.cgi」のグループを「admin」に変更するには「chgrp」関数を使い次のように記述します。
$rslt = chgrp("test.cgi", "admin");ファイル名「test.cgi」を「aaa.cgi」に変更する場合は「rename」関数を使い次のように記述します。
$rslt = rename("test.cgi", "aaa.cgi");ファイル「test1.cgi」を削除する場合は、「unlink」関数を使い次のように記述します。
$rslt = unlink("data");新しいフォルダ「data」をパーミッション「755」で作成する場合は、「mkdir」関数を使い次のように記述します。
$rslt = mkdir("data", 0755);
※「0755」の頭「0」は8進数の記述方式ですが、パーミッションの表記法と同じになりますのでこの方法を使うと解かりやすいと思います。フォルダ「data」を削除する場合は、「rmdir」関数を使い次のように記述します。
$rslt = rmdir("data");
上記の命令を確認するため次のようなサンプルを作ってみました。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD> <title>ファイルやディレクトリ操作の命令</title> </HEAD> <BODY> END_DOC; $filnam = "test1.cgi"; $fp = fopen($filnam,"w");fclose($fp); $rslt = chmod($filnam, 0777); print "chmod $filnam 0777:$rslt<br>\n"; $rslt = chown($filnam, "satou"); print "chown $filnam satou:$rslt<br>\n"; $rslt = chgrp($filnam, "admin"); print "chgrp $filnam admin:$rslt<br>\n"; $rslt = rename($filnam, "aaa.cgi"); print "rename $filnam → aaa.cgi:$rslt<br>\n"; $rslt = unlink($filnam); print "unlink $filnam:$rslt<br>\n"; $rslt = unlink("aaa.cgi"); print "unlink aaa.cgi:$rslt<br>\n"; print "--------------------<br>\n"; $dirnam = "data"; $rslt = mkdir($dirnam); print "mkdir $dirnam:$rslt<br>\n"; $rslt = rmdir($dirnam); print "rmdir $dirnam:$rslt<br>\n"; $rslt = mkdir($dirnam, 0777); print "mkdir $dirnam 0777:$rslt<br>\n"; $rslt = rename($dirnam, "aaa"); print "rename $dirnam → aaa:$rslt<br>\n"; $rslt = rmdir($dirnam); print "rmdir $dirnam:$rslt<br>\n"; $rslt = rmdir("aaa"); print "rmdir aaa:$rslt<br>\n"; print <<< END_DOC </BODY> </HTML> END_DOC; ?>
◆実行結果について
上記のサンプルを「fildir.php」という名前で保存して実行してみてください。
実行結果はこちらをクリックしてください。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。