WordPressを管理画面から更新しようとした際に、次のメッセージが表示されて更新できないことがあります。
「更新のためにFTP情報を入力してください」
「FTPサーバー、ユーザー名、パスワードを入力してください」
この現象は、サーバー上のファイル所有者とWordPressを実行しているPHPユーザーが一致していないために発生します。発生する仕組みと解決手順を解説します。
🧩 現象の概要
WordPressの管理画面から更新を実行すると、内部ではPHPがWordPressのファイルへ直接書き込みを行います。
しかし、サーバー上で以下のような状態になっていると書き込みエラーが起きます。
- WordPressのファイル所有者が「admin」や「root」など別のユーザーになっている
- PHPが「apache」や「nginx」ユーザーとして動作している
この状態ではPHPがファイルを直接変更できないため、WordPressは FTP経由で更新するモード(FTPモード) へ自動的に切り替わります。その結果、FTP接続情報の入力を求められます。
✅ 解決方法(推奨)
① ファイル所有者をPHP実行ユーザー(例:apache)に変更
SSHでサーバーにログインし、以下のコマンドでファイル所有者を変更します。
sudo chown -R apache:apache /var/www/html/wp
/var/www/html/wpはWordPressを設置しているパスに置き換えてください。
PHP実行ユーザーはOSや環境によって異なります。事前に以下のコマンドで確認してください。# Apache系(CentOS/RHEL)で確認 ps aux | grep httpd # Nginx + php-fpm の場合 ps aux | grep php-fpmCentOS/RHEL系では
apache、Ubuntu/Debian系ではwww-dataが一般的です。
なお、所有者をPHP実行ユーザーに統一すると、Webプロセスがファイルを書き換えられるようになります。万一サイトが改ざんされた際に影響が広がりやすくなるトレードオフがあるため、運用に応じてWAFの導入や更新後の権限見直しを検討してください。
② パーミッションの整理
続けて、ディレクトリとファイルのアクセス権(パーミッション)を設定します。
sudo find /var/www/html/wp -type d -exec chmod 755 {} \;
sudo find /var/www/html/wp -type f -exec chmod 644 {} \;
sudo chmod 640 /var/www/html/wp/wp-config.php
これで、必要な権限を維持しつつWordPressがファイルを更新できるようになります。
③ wp-config.php に追記(必要に応じて)
一時的な対応としてFTPモードを強制解除する場合は、wp-config.php に以下を追記します。
define('FS_METHOD', 'direct');
ただし、権限の不一致が解消されていないと効果がない場合があります。根本的な解決方法は「ファイル所有者の修正」です。
🧪 テスト結果(VMware上での検証)
弊社のVMwareテスト環境で検証を行いました。ファイル所有者を apache:apache に統一したところ、WordPress本体の更新を管理画面から正常に実行できることを確認しました。
FTP情報の入力は不要となり、管理画面から直接アップデートを実行できます。
🔄 自動アップデート(マイナー更新)について
マイナーアップデート(セキュリティ更新)も同じ書き込み権限を使用します。そのため、wp-cron.php が正常に実行されていれば、自動更新も動作する見込みです。
※ サーバーのcron設定や、外部アクセスによるトリガーが有効であることを確認しておくと安心です。
📋 まとめ
| 項目 | 内容 |
|---|---|
| 原因 | ファイルの所有者とPHP実行ユーザーが異なるため |
| 解決方法 | 所有者を apache:apache に変更し、パーミッションを整理 |
| 補足 | wp-config.php に FS_METHOD を追記してもOK(暫定対応) |
| 検証結果 | VMwareテスト環境で正常動作を確認済み |
| 注意点 | 自動更新は wp-cron.php が有効であることが前提 |