問題の概要必須プラグインのインストール中にすべてが停止してしまうことがあります。成功メッセージの代わりに、WordPressは「PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file」という厄介なエラーを表示します。これは、WordPressがダウンロードしたばかりのZIPファイルを見失ってしまうために発生します。通常、サーバーが一時ファイルを保存する場所を認識していないか、WordPressに書き込み権限が与えられていないフォルダが原因です。
主な原因- WP_TEMP_DIRが未定義: WordPressがファイルの保存場所を推測していますが、それが間違っています。- 厳格なパーミッション: wp-content/upgradeフォルダが、755や775よりも厳しい権限でロックされています。- PHP ZipArchiveの欠如: 最新のZipArchive拡張機能が有効になっていないため、サーバーが古くて遅いPclZipライブラリを使用しています。- ディスク容量またはiノードの制限: ホスティングプランの20GB制限に達したか、アカウントの最大ファイル数(iノード)を使い果たしています。## ステップバイステップの解決策### 1. WordPressの一時ディレクトリを定義するほとんどの場合、WordPressに作業場所を明示的に指定するだけで解決します。デフォルトでは、サーバーのグローバルな/tmpフォルダを使用しようとしますが、セキュリティ上の理由でホスティングプロバイダーがそのフォルダへのアクセスを制限していると、処理が失敗します。
これを修正するには、wp-config.phpファイルを編集します:
- SFTPまたはホスティングのファイルマネージャーを使用して、サイトのファイルにアクセスします。- ルートディレクトリにある
wp-config.phpを開きます。- 「/* That's all, stop editing! Happy publishing. */」という行を探します。- そのすぐ上に、以下の行を貼り付けます:``` define('WP_TEMP_DIR', dirname(FILE) . '/wp-content/upgrade/');
これにより、サーバーの共有一時スペースではなく、サイト独自の`upgrade`フォルダを使用するようにWordPressに指示します。
### 2. Upgradeフォルダの作成と権限設定コードでディレクトリを設定するだけでは不十分です。そのフォルダが実際にサーバー上に存在している必要があります。フォルダがない、あるいは「所有者」が正しくない場合、WordPressは引き続き(-4)エラーを発生させます。
- `wp-content`フォルダに移動します。- `upgrade`という名前のフォルダがあるか確認します。なければ作成してください。- フォルダを右クリックし、パーミッションを`755`に設定します。制限の厳しいホストでは、`775`が必要な場合があります。コマンドライン操作に慣れている場合は、以下の3つのコマンドを実行して、フォルダを準備し、Webサーバー(通常は`www-data`)が所有するように設定します:
mkdir -p wp-content/upgrade chmod 755 wp-content/upgrade chown -R www-data:www-data wp-content/upgrade
### 3. PHP ZipArchive拡張機能を有効にするWordPressは、`ZipArchive` PHP拡張機能が有効なときに最高のパフォーマンスを発揮します。これがない場合、WordPressはPclZipライブラリにフォールバックしますが、こちらはフォルダパスの問題に対して非常に敏感です。`ZipArchive`に切り替えるだけで、エラーが即座に解消されることがよくあります。
**Ubuntu/Debianの場合:**
sudo apt-get install php-zip sudo systemctl restart php8.2-fpm # 使用しているバージョンに合わせて変更してください sudo systemctl restart nginx
**cPanelの場合:** **Select PHP Version**を探し、**Extensions**をクリックして、**zip**のチェックボックスがオンになっていることを確認します。すでにチェックされている場合は、一度外してから再度チェックを入れて設定を更新してみてください。
### 4. サーバーの制限を確認するディスク容量が99%に達していると、WordPressはZIPファイルの書き込みを完了できません。0バイトのファイルが作成され、データが不足していると判断されてPCLZIPエラーが発生します。以下のコマンドを使用して空き容量を確認してください:
df -h
また、**iノード**(許可されているファイルの総数)も確認してください。古いセッションファイルやエラーログが数千個ある場合、容量は残っていても、新しいファイル用の「スロット」がなくなっている可能性があります。`df -i`を使用してiノードの使用状況を確認してください。
## 修正の確認方法これらの変更を適用したら、ダッシュボードに戻ります。「Classic Editor」や「Query Monitor」のような小さなプラグインのインストールを試してください。数秒でインストールが完了すれば解決です。`wp-content/upgrade`の中を覗いてみてください。空になっているはずです。WordPressは行儀の良いゲストのように、インストールが終わると一時的なZIPファイルを削除します。
## プロのメンテナンスのヒント- **詰まりを解消する:** アップデートに失敗すると、`wp-content/upgrade`内に「ゾンビ」フォルダが残ることがあります。将来の競合を防ぐために、これらを手動で削除してください。- **open_basedirを確認する:** 共用サーバーで修正がうまくいかない場合は、`open_basedir`の制限が有効になっていないかホストに問い合わせてください。この設定は、WordPressが必要な一時フォルダを「認識」するのを妨げることがあります。- **セキュリティプラグイン:** セキュリティプラグインの一部の「要塞化(Hardening)」機能は、PHPによる`wp-content`ディレクトリへの書き込みをブロックします。行き詰まった場合は、セキュリティプラグインを無効にして5分間のテストを行ってみてください。

