【レンタルサーバー】FTPで削除できないファイルをPHPで削除する

サイト運営 PHP
自己責任で!!
よくわからない人は、自身でやらないで、サポートに連絡して削除してもらうほうが良いと思う。

[パターン1] ファイル・フォルダ名に日本語を使用している
ファイルやフォルダの名前に日本語を使うと削除できなくなってしまうことがあります。
ファイルやフォルダが削除できなくなってしまいました。 – さくらのサポート情報

【1】ファイルおよびフォルダ名に使用できない文字が含まれている
ご利用のFTPソフトでファイル名を変更可能であれば、変更後に削除してください。
webサーバー上の特定のファイル、フォルダが削除できません。 / ファイル転送について / よくある質問 / サポート - レンタルサーバーならロリポップ!

こういうケースですね。FTPソフトなどで見ると、ファイル名が空白や、文字化けしたファイルにみえるというファイルです。

手順

・STEP1:ファイル一覧を表示してみる
・STEP2:削除するファイルを特定する
・STEP3:該当ファイルを削除する

手順としては、上記のような感じで行いました。

STEP1:ファイル一覧を表示してみる

<?php
foreach (glob('*') as $file) {
  $size = filesize($file);
  echo $file.":".$size;
  echo  "<br/>";
}

削除したいファイルがあるフォルダに上記のphpをいれて、ファイル一覧を取得します。

 :22364463
170911_130641.sql:22364463
170911_130901.sql:0
170911_131043.sql:0
backup:4096
default_page.png:26065
index.html_old:2814
index.php:99
folderx:4096
robots.txt:26

今回削除したいのは、一番上の空白で表示されているファイルです。ファイルサイズが「22364463」であることを利用してファイルを特定します。

STEP2:削除するファイルを特定する

<?php
foreach (glob('*') as $file) {
  $size = filesize($file);

  if($size === 22364463){
    echo $file.":".$size;
    echo  "<br/>";
  }
}

プログラムを少し書き換えて、ファイルサイズが「22364463」のファイルの一覧を取得するように変更してみます。

 :22364463
170911_130641.sql:22364463

こんな感じになりました。
同じファイルサイズのものが存在してたので、この2つになりました。

今回は面倒なので、2つとも削除することにしました。

STEP3:該当ファイルを削除する

<?php
foreach (glob('*') as $file) {
  $size = filesize($file);

  if($size === 22364463){
    echo $file.":".$size;
    echo  "<br/>";
    unlink($file);
  }
}

unlink($file);を追加して、該当ファイルを削除します。

ファイルが削除で来たら、上記のプログラムは削除しておいたほうがよいと思います。間違って実行して、別のファイルを削除する可能性もあるので・・。



スポンサーリンク