• WordPressがFTP接続情報を求めるときはファイルの所有者と更新方法を確認する

WordPressがFTP接続情報を求めるときはファイルの所有者と更新方法を確認する

公開日: 執筆:佐藤

WordPressの更新やプラグインのインストールでFTP接続情報を求められたら、WordPressがファイルへ直接書く方法を選べなかった理由を先に確認します。入力を求めているのは、WordPress管理画面の利用者名とパスワードではありません。

ファイル権限を一律に777へ変えたり、FS_METHODをdirectへ固定したりして画面だけを消してはいけません。対象ファイルの所有者、PHPがファイルを作る利用者、書き込み先、サーバーが認める接続方法を記録してから直します。

接続情報の画面はファイル操作の方法を決めるために出る

WordPressは、更新するファイルを一つの方法だけで書き換えるのではなく、Filesystem APIを通じて利用できる方法を選びます。WordPressの更新処理は、更新先へ接続する段階でrequest_filesystem_credentials()を呼び、得た情報をWP_Filesystem()へ渡します。

直接書き込める条件を満たせば、接続情報の入力は不要です。直接操作を選べない場合は、サーバーで利用できる方法に応じて、FTPまたはSSHの接続情報を求めます。

この画面が出ることだけで、WordPressが壊れているとも、FTPしか使えないサーバーだとも決められません。WordPressが選んだ方法と、その理由を確かめる入口です。

directは書き込みと所有者の両方を確かめて選ばれる

WordPressのファイル操作方法を選ぶ処理は、作業先へ一時ファイルを作ります。ファイルを作成でき、実行中のWordPressファイルと一時ファイルの所有者が一致すると、directを選びます。

書き込み可能という一点だけでは、直接操作を選びません。共有サーバーでは、PHPが作ったファイルと、契約利用者が管理するWordPressファイルの所有者が異なる場合があります。WordPressは、この違いがある状態でウェブサーバー側の利用者がファイルを所有することを避けるため、FTPなどの方法へ切り替えます。

確認する対象は三つです。

対象 確認する内容
更新前のファイル 所有者、グループ、権限
PHPが作る一時ファイル 作成できる場所、作成後の所有者
更新先 WordPress本体、テーマ、プラグインのどこへ書くか

画像のアップロードができても、プラグインのディレクトリへ同じ条件で書けるとは限りません。成功した別の操作から、更新先の所有者と権限を推測しないようにします。

WordPress管理者とFTPの認証情報は別である

画面へ何を入力するか分からない場合は、認証情報の役割を分けます。

認証情報 主な用途 FTP接続情報の画面へ入れるか
WordPress管理者 投稿、設定、利用者などの管理 入れない
FTPまたはSSH サーバー上のファイル操作 サーバーが指定したものを使う
サーバー管理画面 契約、ドメイン、メール、サーバー設定 同じとは限らない
データベース WordPressからデータベースへの接続 入れない

WordPress管理者のパスワードを試し、通らないから変更する方法は採りません。サイト所有者またはサーバー管理者へ、接続先、利用者名、接続方式、操作できるディレクトリを確認します。

制作会社が認証情報を持っている場合は、更新を頼むかどうかと、事業者が認証情報を受け取って管理できるかを分けます。作業を委託しても、サーバー契約とファイルを引き継げる状態は事業者側で確認します。

FS_METHODは所有者や権限を変えない

FS_METHODをwp-config.phpへ定義すると、WordPressが自動判定した方法を上書きできます。しかし、この定数は、ファイルの所有者を変えたり、書き込み権限を与えたりする設定ではありません。

directへ固定すれば接続情報の画面を通らなくても、更新先へ安全に書ける状態になったとは限りません。書き込みに失敗する場合も、PHPが作るファイルの所有者が運用方針と合わない場合もあります。

FS_METHODを使うなら、サーバー管理者が推奨する方法、対象ディレクトリ、所有者、更新後に作られるファイルの所有者を確認します。別サイトで動いた定義を、そのままコピーしません。

接続情報の保存範囲を確認する

request_filesystem_credentials()は、入力した接続先、利用者名、接続方式をWordPressの設定へ保存しますが、パスワードとSSH鍵は保存対象から外します。更新のたびにパスワードを求められることは、この処理に沿った動きです。

一方、FTP_HOST、FTP_USER、FTP_PASSなどをwp-config.phpへ定義すれば、WordPressはその値を使います。パスワードを設定ファイルへ書けば、ファイルとバックアップの中に秘密情報が残ります。入力画面を省くことだけを目的に、認証情報を常駐させません。

設定ファイルへ置く必要がある場合は、閲覧できる人、ファイル権限、バックアップの保管先、契約終了時の削除を決めます。秘密情報の管理責任と、更新作業の担当を別々に記録します。

更新ファイルの取得失敗とは分けて調べる

接続情報の画面は、更新先のファイル操作に関するものです。更新パッケージを外部から取得できない問題とは、確認する経路が違います。

エラー文に接続先ホストやHTTP要求の失敗があるなら、WordPressから外部への通信を確認します。FTP接続情報を入れても、外部HTTP通信の遮断や名前解決の問題は直りません。反対に、更新ファイルを取得できても、更新先へ書けなければ作業は完了しません。

「更新できない」とまとめず、次の二点を記録します。

  • 更新ファイルを取得できたか
  • 取得したファイルを更新先へ書けたか

担当者へ依頼するときも、表示された文と止まった段階を渡します。

一つの更新対象で書き込み方法を確認する

調査では、複数の設定を同時に変えません。

  1. 更新しようとしたWordPress本体、テーマ、プラグインの名前と版を記録する。
  2. 表示された接続情報の画面またはエラーを保存する。
  3. データベースと必要なファイルを保存し、復旧方法を確認する。
  4. 更新先の所有者、グループ、権限を記録する。
  5. サーバー管理者へ、PHPの実行条件と推奨するファイル操作方法を確認する。
  6. 所有者または接続方法を一つだけ直し、同じ更新を一度実行する。
  7. 公開画面、管理画面、更新した機能、作成されたファイルの所有者を確認する。

作業が終わったら、使った接続方式、変更した設定、更新結果、復旧の要否を残します。接続できたことではなく、必要なファイルが更新され、サイトの機能を確認できたことを完了条件にします。

最初の一手は、FTPパスワードを探すことではありません。更新対象のパスと、現在の所有者、グループ、権限を一組で記録してください。

戻る