WordPressで「インストールに失敗しました: 宛先フォルダが既に存在します」を修正する方法

intermediate📝 WordPress2026-04-24| WordPress 5.5以降, Linux/Unixサーバー (Ubuntu, CentOS, Debian), Nginx/Apache

Error Message

Installation failed: Destination folder already exists
#wordpress#plugin#theme#sftp#wp-cli

WordPressの更新が突然止まってしまう理由

今日、クライアントのカスタムテーマを更新している時に、よくあるけれど厄介な障害にぶつかりました。新しい.zipファイルをアップロードして、すぐに完了メッセージが出ると思っていたのですが、WordPressにこう言われて遮られてしまったのです。

Installation failed: Destination folder already exists

このエラーは通常、更新の失敗や手動アップロードのミスを意味します。WooCommerceやElementorのような大規模なプラグインの更新がタイムアウト(多くの場合、PHPのデフォルトの30秒という max_execution_time 制限に達すること)すると、半分だけ解凍されたフォルダが残されます。WordPressはそのディレクトリを見つけると、データの上書きを恐れて処理を中断してしまいます。

「ゴースト」フォルダの特定

このエラーが発生した時、WordPressは保護機能が働いています。アップロードしようとしているものと同じ名前のフォルダがあるのを見つけ、それを勝手に触ることを拒否しているのです。まず最初に行うべきは、wp-content/plugins/ ディレクトリの確認です。ダッシュボードでプラグインが有効になっていなくても、物理的にフォルダが存在していることがあります。その「ゴースト」フォルダが原因です。

解決策1:SFTPによる手動クリーンアップ(確実な方法)

手動での削除は、ピンポイントで対処できるため私のお気に入りの方法です。FileZillaやWinSCPなどでSFTPアクセスができる場合は、以下の手順でパスをクリアしてください。

  • サーバーに接続し、/public_html/wp-content/plugins/(または /themes/)へ移動します。
  • インストールしようとしているプラグインと同じ名前のフォルダを探します。
  • プロのヒント: 削除する前に、そのフォルダのバックアップをデスクトップにダウンロードしておきましょう。
  • サーバーからフォルダを削除します。

コマンドラインを使用している場合は、さらに高速です。ただし rm コマンドの使用には注意してください:

# pluginsディレクトリに移動
cd /var/www/html/wp-content/plugins/

# フォルダ名を確認
ls -d */

# 問題のフォルダを削除('plugin-slug' を実際のフォルダ名に置き換えてください)
rm -rf plugin-slug/

残骸がクリアされたら、ダッシュボードに戻ってアップロードを再試行してください。完璧に動作するはずです。

解決策2:WP-CLIで強制インストール

ターミナル操作を好むなら、WP-CLIが救世主になります。--force フラグを使用することで、手動削除の手間を完全に省くことができます。これにより、既存のファイルを無視してZIPファイルの内容で強制的に上書きするようWordPressに指示できます。

# プラグインの場合
wp plugin install /path/to/plugin.zip --force

# テーマの場合
wp theme install /path/to/theme.zip --force

これは、複数の環境を管理する開発者にとって最も効率的なルートです。

解決策3:ダッシュボードの「現在のものを置換」機能を使用する

バージョン5.5以降、WordPressには組み込みの安全策が用意されています。通常、既に存在するZIPをアップロードすると、「現在のものをアップロードしたもので置き換える」かどうかを尋ねる画面が表示されます。バージョン番号を比較して確認することも可能です。

ただし、この機能は有効な style.css やプラグインヘッダーが存在していることが前提です。前回のインストールが展開の途中で失敗した場合、それらのメタデータが欠落している可能性があります。もし「置換」ボタンが表示されない場合は、解決策1のSFTPメソッドを使用する必要があります。

パーミッションへの対処(403エラー)

フォルダを削除しようとしても「Permission Denied(アクセス拒否)」エラーが出ることがあります。これは、Webサーバーのユーザー(www-datanginx など)がファイルを所有しており、SFTPユーザーに権限がない場合に発生します。所有権をリセットすることで解決できます:

# Webユーザーに所有権をリセット
sudo chown -R www-data:www-data /var/www/html/wp-content/plugins/plugin-name

# または、パーミッションを755に設定
sudo chmod -R 755 /var/www/html/wp-content/plugins/plugin-name

修正の再確認

インストールが完了したら、作業内容を確認しましょう。プラグインページでバージョン番号が正しいかチェックし、有効化します。また、すぐにサイトのフロントエンドを確認することをお勧めします。ls -l でファイルシステムを確認し、新しいフォルダに現在のタイムスタンプが付いていれば、上書きが成功した証拠です。

予防策:二度と行き詰まらないために

環境をクリーンに保ちましょう。こうしたトラブルの多くは、自動更新中のサーバータイムアウトが原因です。頻繁に発生する場合は、php.inimemory_limit を 256M に、max_execution_time を 300 に増やすことを検討してください。大規模な更新には WP-CLI を使用することも、ブラウザベースの接続切断を避けるための優れた方法です。

Related Error Notes