No.2ベストアンサー
- 回答日時:
フォルダ作成と削除ということですね。
おそらく問題にされているのは、下記のような点でしょうか。
深い階層のフォルダ作成
→親フォルダから順に作らないと、サブフォルダを作成することができない
深い階層のフォルダ作成
→サブフォルダを空にしてから出ないと、親フォルダを削除できない
Windows/Linux共通となると、区切り文字「\」「/」の問題がありますが、
これは定数DIRECTORY_SEPARATORを使うことで解決できます。
この定数は、それぞれの環境で適切な区切り文字が入ってきます。
http://au3.php.net/manual/ja/ref.dir.php
■深い階層のフォルダ作成
・与えられたパスを区切り文字で分割
・上位のフォルダから順に作っていく
ということで、下記のような感じでどうでしょうか。
(スペースが全角です。コピーするときは注意して下さい)
function makedir($dirpath){
$dirs = explode(DIRECTORY_SEPARATOR , $dirpath);
$path = '';
foreach ($dirs as $dir) {
$path .= $dir . DIRECTORY_SEPARATOR;
if (! file_exists($path)) {
mkdir($path);
}
}
}
■深い階層のフォルダを削除
・下位のファイル、フォルダから削除
ということで、dir()、is_dir()、unlink()、rmdir()関数あたりを使って
http://au2.php.net/manual/ja/class.dir.php
http://au2.php.net/is_dir
http://au2.php.net/unlink
http://au2.php.net/rmdir
下記のように書くことができますが、当方のWindows+Apache+PHP4環境では
フォルダ削除時にPermission deniedエラーが出ました。
ベタでrmdir('a:\\b\\c\\d'); rmdir('a:\\b\\c'); …とやっていくと削除
できたりしているのですが、すみませんが原因がわかりませんでした。
function remove($path){
$d = dir($path);
while ($entry = $d->read()) {
if ($entry == '.' || $entry == '..') continue;
$objpath = $path . DIRECTORY_SEPARATOR . $entry;
if (is_dir($objpath)) {
// サブディレクトリを削除
remove($objpath);
} else {
// 見つかったファイルは削除
unlink($objpath);
}
}
unset($d); $d = null;
rmdir($path);
}
シェル/コマンドラインを使うと簡単だとかいう、元も子もないコメントが
rmdir()のマニュアルページにあったので、それを参考に、
http://au3.php.net/manual/ja/function.rmdir.php# …
$path = '…削除したいフォルダのフルパス…';
// Linux
if (DIRECTORY_SEPARATOR == '/') {
system('rm -rf ' . $path);
}
// Windows
if (DIRECTORY_SEPARATOR == '\\') {
system('rmdir ' . $path . ' /s /q');
}
とやってみましたが、いかがでしょうか。
※テスト時は重要なフォルダを消さないようにご注意ください
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 自作フォルダアイコンがいつの間にか変わる 3 2023/07/04 08:29
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Windows 10 Window10ショートカットキーで切り取り貼り付けするとコンテキストメニューと挙動が異なる理由は? 2 2022/04/16 17:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 10:35
- UNIX・Linux 【初心者】aws lightsail で自作のオリジナルテーマのwordpressを設定する方法 1 2022/07/14 09:46
- Gmail 秀丸メール、2台のPCにセットしてあります。gmailのついて質問です。 1 2022/07/25 08:01
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Windows 10 Windows10で、フォルダにあるすべてのファイルを、下層フォルダも含め一つの階層へ配置し直したい 3 2022/05/31 09:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP/icludeを使った相対パスの...
-
__FILE__をHTMLタグ内で使う
-
深い階層のフォルダの作成や削...
-
ゼンド フレイムワークがどうや...
-
onedrive にexcelファイルをア...
-
CFileDialogの最初のディレクト...
-
透過PNGが透過されない!!
-
フォームで戻った際に入力済み...
-
別ファイルの変数を呼び出した...
-
PHPのif文でその処理を途中で抜...
-
phpの中でphpを書けないか
-
さくらサーバーにて、phpからメ...
-
リンク先を隠す方法はないでし...
-
フォントの色を変えるには?
-
VBSの「MsgBox」について
-
inputタグでphpを呼び出す際、...
-
PHPで新しいウインドウで開く命...
-
PEAR Image_QRCodeのエラー
-
【file_exists】ファイルが存在...
-
「@$変数」の「@の意味は?」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
index.phpに入るには、どうすれ...
-
include時の頭の良いパス指定に...
-
require_onceで読み込む場合、...
-
深い階層のフォルダの作成や削...
-
サイトパスに使用しているURLを...
-
.htaccessファイルの修正がこれ...
-
1つのcakePHPで複数のサイトを...
-
[PHP] 任意のDNSでIPアドレスを...
-
phpでページ分けする方法を教え...
-
PHP Linux から Windowsへの移行
-
zendのcontrollersについて
-
ゼンド フレイムワークがどうや...
-
mod_rewite?でのリダイレクト...
-
万国博覧会
-
歴史上の人物や宗教
-
PHPファイルが、そのまま見えて...
-
SSLに設置したらディレクトリパ...
-
変数値の渡し
-
ラミネート加工について
-
__FILE__をHTMLタグ内で使う
おすすめ情報