■ファイル操作関連の主な関数 |
|
|
作成:2011.12.5/2015.9.10修正 yoshi |
関数 |
処理機能 |
備考(利用方法他) |
【ディレクトリ関連】 |
mkdir |
ディレクトリを作成 |
mkdir($folder,0755); |
rmdir |
ディレクトリを削除 |
rmdir('examples'); |
getcwd |
現在のワーキングディレクトリを取得(絶対パスでget可能) |
echo getcwd(); |
chdir |
現在のディレクトリを変更 |
chdir('public_html'); |
opendir |
ディレクトリのオープン |
opendir($dir); |
readdir |
ディレクトリの内容を読み込む |
while ($file = readdir($dh)) { … } |
closedir |
ディレクトリのクローズ |
closedir($dh); |
scandir |
ディレクトリの内容を読み取る |
$files = scandir($dir); |
chroot |
ルートディレクトリを変更する |
chroot("/path/to/your/chroot/"); |
【ファイル情報取得関連】 |
realpath |
絶対パス名を取得(成功した場合は正規化した絶対パス名を返す) |
echo realpath('/windows/system32'); |
dirname |
パスからディレクトリ名を切り出す |
dirname('c:/x'); // 'c:\' を返します |
basename |
パスの最後にある名前の部分を返す |
$filename=basename("/etc/sudoers.gif"); |
stat |
ファイル情報をまとめて取得(mode,dev,size,atime,mtime他) |
$stat = stat('C:\php\php.exe');
echo '更新日時: ' . $stat['mtime'];" |
file* |
ファイル情報を個別に取得→*は、(node,perms,owner,size,mtime,type他) |
filetype('/etc/passwd'); //ファイルタイプ |
file_exists |
ファイルが存在するかどうかのチェック |
if( file_exits($filename) ){ … } |
touch |
ファイルの最終アクセス時刻および最終更新日をセット(存在しないファイルの時は、空ファイル出力) |
touch($filename,$time);
$timeを省略すると現在の時刻 |
is_dir |
ファイルがディレクトリかどうかを調べる(ファイルが存在して、かつそれがディレクトリであれば TRUE、それ以外の場合は FALSE を返します。) |
//一つ上のディレクトリ(true)
var_dump(is_dir('..')); |
is_file |
通常ファイルかどうかを調べる(ファイルが存在し、かつそれが通常のファイルである場合に TRUE、 それ以外の場合に FALSE を返します。) |
var_dump(is_file('a_file.txt')); //true |
【ファイル関連】 |
unlink |
ファイルを削除 |
unlink($filename); |
glob |
shellパターンにマッチするファイルを検索して、配列で返す |
foreach (glob("*.txt") as $filename) { … } |
copy |
ファイルのコピー |
copy($org_filename,$copy_filename); |
rename |
ファイル名の変更 |
rename($before_filename,$after_filename); |
readfile |
ファイルをすべて読みとり、標準出力に出力 |
readfile($file); |
fopen |
ファイルのオープン(バイナリーモードでの書き込みは、「b」を付加)) |
$fh = fopen($filename,"r"); |
fclose |
ファイルのクローズ |
fclose($fh); |
flock |
開かれているファイルをロック制御(LOCK_EX,LOCK_UN,LOCK_SH)
flock(ファイルハンドル,ロック方法); |
flock($fh,LOCK_EX); |
fgets |
開かれているファイルの1行読み取り(文字列として、1行の改行文字が含まれる) |
$data = fgets($fh); |
fputs |
ファイルの書き込み(fwriteと同じ働き) |
fputs($fh,$data); |
fread |
バイナリーで画像ファイル読み取り(fopenモードで「b」の指定) |
$data = fread($fh, filesize($filename)); |
fwrite |
開かれているファイルに書き込み(文字列として) |
if (fwrite($fh, $data) === FALSE) { … } |
fgetcsv |
CSVファイルを読み取り(配列データとして読み込み) |
while (($data = fgetcsv($fh, 1000, ",")) !== FALSE) { … }" |
fputcsv |
CSVファイルを書き込み(配列データとして書き込み)デリミタの付加可能(tab:\tなど) |
fputcsv($fh, $fields,"\t"); |
feof |
ファイルの終端(EOF)かをチェック |
while( !feof($fh) ){ … } |
file |
ファイル全体を読み込んで配列に格納する |
$lines = file('http://exm.jp/'); |
file_get_contents |
ファイルの内容を全て文字列に読み込む |
$page = file_get_contents('http://.exm.jp/'); |
file_put_contents |
文字列をファイルに書き込む(バイナリデータに対応)
fopen()、fwrite()、 fclose() を続けてコールしてデータをファイルに書き込むのと等価" |
file_put_contents($filename,$item); |
【その他付加情報】 |
@ |
@は、エラー制御演算子で、式の前につけるとその式でのエラーメッセージを無視する |
$fh = @fopen($filename,"r"); |
r |
[ファイルモード] 読み込みのみ |
|
r+ |
[ファイルモード] 読み込みして、書き込み |
|
w |
[ファイルモード] 書き込みのみ(ファイルがない場合は、作成) |
|
w+ |
[ファイルモード] 読み込み/書き込みのみ(ファイルがない場合は、作成) |
|
a |
[ファイルモード] 追加書き込みのみ |
|
a+ |
[ファイルモード] 読み込み/追加書き込みのみ(ファイルがない場合は、作成) |
|
x |
[ファイルモード] 書き込みのみ(ファイルの先頭のファイルポインタから)ファイルが既に存在する場合は、エラーとなる |
|
x+ |
[ファイルモード] 読み込み/書き込みのみで、他は'x'モードの振る舞い |
|
c |
[ファイルモード] 書き込みのみで、ファイルが存在しない場合には新規作成(PHP5.2.6以降) |
|
c+ |
[ファイルモード] 読み込み/書き込みのみで、他は'c'モードの振る舞い(PHP5.2.6以降) |
|
b |
ファイルをオープンするとき、バイナリーモードで処理する指定で、入出力モードと一緒に指定。 |
$fh = fopen($filename,"wb"); |
LOCK_SH |
[ロック定数] 共有ロック … 読み込みは可能で、解放されるまで書き込み不可 |
|
LOCK_EX |
[ロック定数] 排他ロック … 解放されるまで、読み込み/書き込み不可 |
|
LOCK_UN |
[ロック定数] ロック解除 … ロック状態の解放 |
|