勉強したことのメモ

webプログラマが勉強したことのメモ。

PHPでディレクトリの作成と削除

      2018/12/10

PHPでユーザID毎にディレクトリを作成しその中にキャッシュファイルを格納したかった。また、特定の動作を行った際は作成したディレクトリとファイルを削除したかった。以下に方法をメモ。

 

ディレクトリとファイルの作成の作成

#ディレクトリ名
$cache_dir = './cache/' . $user_id;

#キャッシュファイル名
$cache_file = $cache_dir . '/' . date('YmdHis') . '.cache';

#ディレクトリの存在確認
if( !file_exists($cache_dir) ){
	#存在しない場合はディレクトリを作成
	mkdir($cache_dir);
}

#ファイルの作成
file_put_contents($cache_file, serialize($data), LOCK_EX);

 

ディレクトリの削除

function cacheDelete(){
	$cache_dir = './cache/' . $user_id;

	$list = scandir($cache_dir);
	for( $i = 0; $i < count($list); $i++ ){
		if( $list[$i] != '.' && $list[$i] != '..' ){
			unlink($cache_dir . '/' . $list[$i]);
		}
	}
	rmdir($cache_dir);
}

#特定の動作の時にディレクトリを削除
if( $user_id != 123 ){
	cacheDelete();
}

直接rmdir()でディレクトリを削除しようとした場合、ディレクトリ内にファイルがあるとエラーが発生する。なので先にファイルを全て削除してからディレクトリを削除する必要がある。

 

リファレンス

http://php.net/manual/ja/function.mkdir.php
http://php.net/manual/ja/function.rmdir.php
http://php.net/manual/ja/function.file-exists.php
http://php.net/manual/ja/function.unlink.php
http://php.net/manual/ja/function.scandir.php

 - PHP

  関連記事

PHPで日時比較時の注意

PHPで日時を比較する際にミスがあったのでメモ。 基本形は下記。 $limit_ ...

jQueryとprototypeの共存

prototypeを先に使っているがjQueryに移行してきている ページで、尚 ...

PukiWikiでバックアップのスケジュール化

PukiWikiでバックアップを取りたかった。調べたらディレクトリごと保存すれば ...

GoogleスプレッドシートとPHPの連携

GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...

PHPでCSVファイルを作って開くと「SYLKファイルが云々」のアラートが出た

データベースのログを整形してCSVファイルを生成し、ダウンロード及びエクセルで開 ...

isset等、変数を調べる際の注意点

$strがNULLだったり0だったり空文字だったりする場合で、 if($str) ...

JSONをPHPで扱う

JSONデータはjavascriptで扱うものと思ってたけど、 PHPでも使える ...

PHPで文字のあいまい検索(文字のゆれ)

googleとかで検索する際に、ちょっと間違えて 入力してしまっても「もしかして ...

imgタグとPHPでグラフ作成

プラグインやライブラリを使わずにグラフを作る 機会があったのでメモ。 ■サンプル ...

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...