PHPでディレクトリを削除、unzip

投稿日 : 2017年06月06日   更新日 : 2019年10月12日
カテゴリー : 技術情報 / PHP/javascript/CSS/nodejs
PHPでディレクトリを削除、unzipの画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして7年~の経験があります。WordPressは2年半~の経験があります。その他、jQuery、HTML、CSSも使用します。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

さて、PHPでディレクトリを削除したいこと、結構あると思います。処理の最後に処理し終わったファイルを削除したい、っていうようなこと。

そういうときはLinuxコマンドをPHPプログラム上で実行させると良いです。

色々処理をしなくてもいいしね。

phpでディレクトリ削除したいとき、結構面倒

これをphpで全部書こうとすると

ディレクトリから中身を一つずつ見ていって、

最下層まで行ってファイルを削除してからディレクトリを削除して…

っていうことをしなければならない。

とにかく…面倒すぎるんです。長いんです。途中で処理も間違えそうなくらい。

書いたこともあるけど面倒すぎる。しかもなぜかたまに失敗して残っちゃうときがあるし、やめてよ、っていう…。
※ログ取ってるわけじゃなかったから理由は知らない

今回もそんなものを作った方がいいよねー容量圧迫しないよねー、削除したほうがいいに決まってる…っていうものがあり。

でもやっぱり一から書くの面倒だわーということで。

ディレクトリ削除コマンド実行

$delCommand = "rm -rf " . 削除したいファイルパス+削除したいディレクトリ
// $delCommand = "rm -rf /tmp/test"; みたいな。
exec($delCommand);

これで跡形もなく削除!linuxコマンドを実行させているだけ!

zip やunzipもコマンドで

PHPライブラリ使ってーっていうやり方あるみたいだけど、それもまた面倒だからコマンド実行する。

$command = "unzip " . 解凍するzipファイルパス+解凍するzipファイル名 . " -d " . 解凍したい場所
// $command = "unzip /tmp/test.zip -d /tmp/"; みたいな。
exec($command);

削除処理系で気を付けるべきは、もう本当になんの慈悲もなく削除するから、間違えてパスを指定しないように気を付けることです。

そう、本当に慈悲もなんもない。間違えて必要なものを削除しないように気を付けてください。

execが使えない環境もある

使えないときは潔く諦めた方がいいと思います。

試してみる価値があるものとしては、やっぱり権限回りとパーミッションですね。

  1. PHPを実行しているユーザーにexecを使用できる権限があるか。
  2. パーミッションがそのユーザーに実行できるものか

この2点が怪しいですね。

ただ、私はまだそういった環境に出会ったことがないので詳しくは記述できません。悪しからず…

ソースレビュー企画-私にソースレビューをさせてください!-

皆様のプログラムのソースを、私に読ませてください!

ソースレビュー企画-私にソースレビューをさせてください!-

プログラムを勉強し始めたばかりの方から、業界云十年のベテランの方でも大歓迎です!どんなソースでもありがたく拝見します!

※無料です

ソースレビュー企画-私にソースレビューをさせてください!-の詳細、お申し込みはこちらからお願いします。

運営サイト紹介

みんなのきょうのごはん-みんごは-

みんなのきょうのごはん-みんごは-

「みんなのきょうのごはん-みんごは-」きょうのみんなのごはんは?Twitterに投稿された美味しそうな「食べ物」画像を、リアルタイムで表示します。

みんごははここからアクセスしてね !

その他広告