「FTPでファイルを削除しようとしたらなぜか消せない…。」
「エラーが出てしまってどうしたらいいかわからない!」
Webサイトを運営していると、こんな困った状況に遭遇することがよくあります。
ウェブサイト制作をしている方は特に、FTPソフトの定番「FileZilla」を使っている方が多いのではないでしょうか?
この記事では、FileZillaでFTP上のファイルが削除できなかったときに試してほしい手順を実際に起きた事例をもとに徹底解説します。
初心者の方にもわかりやすいように、専門用語はできるだけ避け、具体的なステップで説明していきます。
FileZilla(ファイルジラ)ってどんなソフト?
まずは「FileZillaってそもそも何?」という方のために、簡単にFileZillaについてご説明します。
FileZillaは、Webサイトのファイルをサーバーにアップロードしたり、サーバーからダウンロードしたりするための「FTP(File Transfer Protocol)クライアントソフト」の一つです。
無料で使える上、操作も比較的シンプルなので、多くのWebサイト運営者に利用されています
FileZillaの設定方法については、こちらの記事で詳しく解説していますので、まだインストールや設定がお済みでない方は参考にしてください。

どんな時にFTP上のファイル削除が必要になるの?
どんな時にFTP上のファイルを削除する必要があるのでしょうか?
いくつか例を挙げていきます。
- サイトを完全に削除したいとき: もう運営しないサイトやテスト用に作ったサイトなどをサーバーからきれいに消したい場合に、関連するファイルを削除する必要があります。
- 不要なファイルを整理したいとき: サイトの表示速度を上げたり、サーバーの容量を節約したりするために、使っていない画像ファイルや古いバックアップファイルなどを整理したいことがあります。
- 過去のサイトを削除したいとき: ドメインはそのままに、全く新しいサイトを構築する場合など、以前のサイトのデータを削除してまっさらな状態にしたい時にも必要です。
- WordPressなどのCMSを入れ直したいとき: WordPressなどのCMS(コンテンツ管理システム)を再インストールする場合、一度既存のファイルを削除してから新しいものを入れ直すことがあります。
このように、FTP上のファイルを削除する機会は意外と多いです。
要注意!CMS利用時はデータベースの確認も忘れずに
WordPressのようなCMSを使っている場合、FTP上のファイルを削除するだけではサイトが完全に消えないことがあります。これは、CMSがファイルだけでなく、記事や設定のデータをデータベースに保存しているためです。
ファイルだけ消しても、データベースが残っているとサイトが不完全な状態です。完全に削除したい場合は、ファイルの削除と合わせてデータベースも消す必要があります。
作業前には、必ずレンタルサーバーの管理画面でデータベースが残っていないか確認しましょう。もし残っていたら、そちらも忘れずに削除してください。
FileZillaでファイルが削除できない時の対処法
ここからは、実際にFileZillaでファイルが削除できなかったときの具体的な対処手順をステップバイステップで解説していきます。
ステップ1:パーミッション(権限)を確認・変更してみる
まず最初に確認したいのが、ファイルのパーミッション(権限)です。
パーミッションとは、そのファイルやフォルダに対して「誰が」「何を」できるか、という設定のことです。
数字で「755」や「777」のように表されます。
- 755: 一般的なファイルやフォルダの推奨設定です。「所有者(あなた)」は「読み込み・書き込み・実行」ができて、その他の人は「読み込み・実行」ができる状態です。
- 777: すべての人に「読み込み・書き込み・実行」のすべての権限を与える設定です。一時的にこの設定にすることで削除できる場合がありますが、セキュリティ上はあまり推奨されない設定です。削除後は元の安全な設定に戻すようにしましょう。
削除できないファイルやフォルダは、書き込み権限がないために削除できない場合があります。
実際の状況
ダミーURL: https://your-site.com/public_html/test-site/を削除するにあたり、https://your-site.com/public_html/test-site/wp/wp-content
にある wp-content
ファイルのみ削除できず残ってしまった。

試したこと
- FileZillaにて、755や777など権限を見直してみたが削除できない。
- レンタルサーバーの管理画面から提供されているFTP機能でも、削除を試みても削除できない。
パーミッションの変更は、該当フォルダで右クリック>パーミッションの変更>属性値「755」など>「OK」


考えられること
パーミッションを適切に変更しても削除できない場合、パーミッション以外の原因が考えられます。次のステップに進みましょう。
ステップ2:ファイル名を変更して再度削除を試みる
ファイル名に特定の文字が含まれていると、FTPソフトでうまく扱えないことがあります。
特に、文字化けしているファイル名や、全角文字、日本語、記号などが含まれているファイル名はトラブルの原因になりやすいです。
もし削除したいファイルやフォルダ名がこれらの条件に当てはまる場合は、一度シンプルな半角英数字の名前に変更してから削除を試してみましょう。
実際の状況
wp-content
ファイルが削除できない。
試したこと
wp-content
を aaa
にリネームしてFTP上で削除を試みた。
結果
削除できない。
エラーメッセージ
状態: "/your-site.com/public_html/test-site/wp/aaa" のディレクトリ リストの表示成功
コマンド: CWD /your-site.com/public_html/test-site/wp
レスポンス: 250 CWD command successful
コマンド: RMD aaa
レスポンス: 550 aaa: Directory not empty
エラーメッセージの意味
550 aaa: Directory not empty
というエラーは、「aaa
フォルダの中にまだ何か(ファイルやフォルダ)が残っていて、空ではないので削除できない」という意味です。
目には見えない「隠しファイル」が残っている可能性が高いです。
ステップ3:隠しファイルを表示させてみる
上記のエラーメッセージ 550 aaa: Directory not empty
が表示された場合、フォルダの中に隠しファイルが残っている可能性があります。
FileZillaの設定を変更して、隠しファイルを表示させてみましょう。
手順(FileZillaの場合)
- FileZillaの上部メニューから「サーバー」をクリックします。
- 「強制的に隠しファイルを表示」をクリックします。

これで、.htaccess
のような隠しファイルも表示されるようになります。
隠しファイルが見つかった場合は、それらを先に削除してから、目的のフォルダを削除できるか試してみてください。
実際の状況
この手順でやっても隠しファイルは見当たらず、削除できない。
考えられること
隠しファイルが表示されない、または表示されても削除できない場合は、さらに強力な方法が必要になります。次のステップに進みましょう。
ステップ4:PHPスクリプトで強制削除する(最終手段)
ここまで試しても削除できない場合、PHPスクリプトを使って強制的に削除する方法が非常に有効です。
この方法は、FTPソフトでは削除できないような頑固なファイルやフォルダも、サーバー側から直接削除できる可能性があります。
注意:この方法はサーバーのファイルを直接操作するため、誤ったパスを指定すると他の重要なファイルを削除してしまう危険性があります。必ず指定されたパス以外は変更せず、慎重に作業を進めてください。作業後は必ずスクリプトファイルを削除しましょう。
使用するPHPスクリプト
以下のPHPスクリプトは、指定したフォルダ内を再帰的にすべて削除する機能を持っています。
<?php
function deleteFolder($folderPath) {
if (!file_exists($folderPath)) {
echo "フォルダが存在しません: $folderPath";
return;
}
$items = scandir($folderPath);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$path = $folderPath . DIRECTORY_SEPARATOR . $item;
if (is_dir($path)) {
deleteFolder($path);
@rmdir($path);
} else {
@unlink($path);
}
}
@rmdir($folderPath);
echo "削除完了:$folderPath";
}
// 削除したいパスを指定(パスの最後に / は付けない)
$target = __DIR__ . '/wp/aaa'; // ここは削除したいフォルダのパスに変更してください
deleteFolder($target);
?>
手順
- 上記のPHPスクリプトをコピーし、任意のテキストエディタに貼り付けます。
(テキストエディタ:メモ帳、VS Codeなど) - ファイル名を
delete-aaa.php
のように分かりやすい名前にして保存します。
※ファイル名は何でも構いませんが、他のファイルと重複しない名前にしましょう。 - 保存した
delete-aaa.php
ファイルを、削除したいフォルダの一つ上の階層にアップロードします。 今回の事例では、/public_html/test-site/
にアップロードします。
もし、delete-aaa.php
をアップロードしたパスが/public_html/test-site/
なら、スクリプト内の$target = __DIR__ . '/wp/aaa';
の部分は、wp
フォルダがdelete-aaa.php
から見た相対パスになるように調整してください。 - Webブラウザを開き、アップロードしたPHPファイルにアクセスします。
今回の事例の場合、URLは以下のようになります。
ダミーURL:https://your-site.com/test-site/delete-aaa.php
- ブラウザでアクセスすると、PHPスクリプトが実行され、指定したフォルダ (
aaa
フォルダ) が強制的に削除されます。
画面に「削除完了:/home/xxx/public_html/test-site/wp/aaa」のようなメッセージが表示されれば成功です。 - 削除が完了したら、必ずアップロードした
delete-aaa.php
ファイルもFTPソフトで削除してください。
セキュリティ上のリスクがあるため、残しておかないようにしましょう。
実際の事例での結果
このファイルを実行したところ、フォルダごと削除できました。
まとめ:削除できない時の対処フロー
FTP上のファイルが削除できない場合の対処法をまとめると、以下のようになります。
状況 | 対処方法 |
---|---|
パーミッションが原因かも? | パーミッション(権限)を「707」や「777」などに変更して試す |
フォルダが空でないと言われる | FileZillaで「隠しファイルを表示」にチェックを入れて隠しファイルを探し、先に削除する |
隠しファイルが見つからない、または削除できない | PHPスクリプトを使って強制削除を試みる |
PHPスクリプトでも無理な場合 | ご契約のレンタルサーバーのサポートに削除依頼をする |
ほとんどのケースは、上記のいずれかの方法で解決できるはずです。
最後に
FileZillaでFTP上のファイルが削除できないと、焦ってしまうかもしれませんが、落ち着いて一つずつ手順を試せば解決できることがほとんどです。
特に、550 Directory not empty
のエラーが出た場合は、隠しファイルの表示やPHPスクリプトの利用が効果的です。
もし、ご自身での解決が難しい場合は、最終手段としてご契約のレンタルサーバーのサポートに問い合わせてみましょう。専門の知識を持ったスタッフが対応してくれるはずです。
それでは、またお会いしましょう!
コメント