「FTP情報が必要」と表示され、WordPressのプラグイン・本体の更新ができない場合についてお伝えしてきます。株式会社ファンフェアファンファーレでは、ホームページの新規制作サービスのほか、WordPressのカスタマイズサービスなどを提供しております。
基本的には、WordPressテーマファイルの編集やファイルの追加などでカスタマイズを実装していますが、かなり古いバージョンのWordPressサイトをカスタマイズさせていただく場合は、WordPress関数などの関係で、少し冷や汗が出ることがあります。
さて、今回は他のホームページ制作会社さんなどからヘルプでご依頼をいただいた事が多い、WordPressのバージョンアップ関係の不具合解消について、覚書程度にお伝えさせていただきます。「FTP情報が必要」と表示され、WordPressのプラグインや本体の更新ができないケースのトラブル解決についてお伝えします。
WordPressのプラグイン・本体の更新ができない
「更新ボタンを押すとFTP情報を求められ、WordPressのプラグイン・本体の更新ができない」
「FTP情報なんてわからない」
「サーバーの情報を確認してもFTPの情報が記載されていない」
「WordPressの本体とプラグインを更新したいがFTP情報を求められるため更新ができない。何とかならないか?」
こんな依頼を複数回いただいたことがあります。すべて、お付き合いのある広告代理店様や他府県のホームページ制作会社様から「知り合いが困っているので何とかならないか?」という旨でご依頼をいただきました。
一般的なレンタルサーバーは、契約時にFTP接続に関するホスト名、ユーザー名、パスワードなどを確認することができるため、もしWordPress更新時にFTP情報を求められても、事なきを得ることができます。
AWSの EC2でバージョンが古いWordPress
しかしながら、今回のようなケースはほとんどが「AWS(Amazon Web Services)」の EC2(Amazon Elastic Compute Cloud)でのWordPressの利用のケースです。その他、名称は伏せさせていただきますが、ローカルのサーバー会社さんのレンタルサーバーでも同じことが起こっていました。
そしてこれらは、WordPressのバージョンが古かった時にインストールされたものでした。
「またAWSか…」
毎度毎度、そんなつぶやきをするのでした。
FTP情報がわからない
FTPとは「ファイルトランスファープロトコル(File Transfer Protocol)」という、ローカルコンピュータとウェブサーバーの間でファイルの送受信をする際に使用する通信規則です。その頭文字を取って「FTP」です。
セキュリティに少し弱みがありますが、FTPは一般的な通信方式です。なお通信を暗号化したFTPSという方式もあります。
一般的な共用レンタルサーバーなどでは、今でもFTPが用いられています。
そういったレンタルサーバーを契約した場合、お手元のパソコンとサーバーの間でファイルのやり取りができないと当然意味が無いため、こうしたFTP接続に関する情報は「サーバー契約情報」などで確認することができます。
SSHで接続
しかしながら、今回のケースはFTPを用いるタイプではなく、SSH(Secure Shell)という方式を使っています。AWSの EC2では一般的にSSHで接続します。
FTPは、FTPクライアントソフトを使用して、ホスト名、ユーザー名、「パスワード」といった情報でサーバー認証を行います。
SSHは、SSHのクライアントソフトを使用して、ホスト名、ユーザー名、「秘密鍵」といった情報で、認証を行います。
操作として通常のファイルの受け渡しには、それほど大差はありません。
WordPress更新時に求められる情報
そこで問題となるのが、WordPressの管理画面での情報入力です(結構古いWordPressバージョンの画面です)。
WordPress本体の更新やプラグインの更新を行おうとすると、「接続情報」として、「要求された操作を実行するためには、接続情報が必要です」と表示され、ホスト名、ユーザー名、パスワード、そして接続方式の選択を求められます。
そこで、普段SSHでの接続をしている場合は問題がなかった「FTP情報」が必要になります。
FTPは、設定されたパスワードでの認証ですが、SSH接続の認証形式である「公開鍵」や「秘密鍵」は、パスワードとは異なり、鍵自体が一つのファイルになっています。
パスワード認証と鍵認証
つまりイメージとしては、オートロックのドアの前に立ちはだかった時、「暗証番号を入力してドアを開ける」のがFTP、「ドアの鍵をガチャっと回してドアを開ける」のがSSHです。
もちろんセキュリティを考えれば、「暗証番号」なら、素人であっても無作為に入力し続ければドアを開けることができる可能性が高く、「鍵」ならば、プロでないと開けにくいという面で、セキュリティレベルが異なるというイメージです。
WordPressは「FTP情報」の入力を求めているという点が問題
ここで問題となるのが、WordPressは「FTP情報」の入力を求めているという点です。
秘密鍵など鍵方式しか採用していないのならば、当然「暗証番号」にあたる「パスワード」自体がありません。
設定されていないからといってパスワード欄を未入力で、更新開始を試みても、当然にWordPressに弾かれてしまいます。
FTP接続を行える環境であれば良いのですが、セキュリティの関係でSSHのみでサーバー操作を行っている場合、WordPressにFTP情報を求められたところで、そもそもFTPを使っていないのだからどうしようもありません。
さて、どうしたものか…
WordPress本体・プラグイン「更新」へ解決策
SSHでの通信をしている場合は、当然FTP情報など無いため、先の画面を操作して、WordPressの本体・プラグイン更新を開始することはできません。
WordPress本体更新、プラグイン更新の時に、WordPressにFTP情報を求められたとしても、その画面で入力できるようなものがないのですから、お手上げです。
しかしながら、機能の向上やセキュリティ強化のためには、やはりWordPressの本体やプラグインを更新する必要があります。そんなときはどうすれば良いのでしょうか?
答えは単純なのですが、「FTP接続を求められる」というステップをバイパスすることが、この手の不具合の解決策です。
不具合に対応するプラグイン
AWSのEC2などの問題があってか、この不具合に対応するプラグインなどもあるようですが、そのプラグインをインストールしようとすると、先ほどの画面が表示されます。
せっかく「FTP接続を求められる」という現象をバイパスするためにプラグインインストールで解決しようとしているのに、そのプラグインインストールすら、「WordPress側にFTP接続を求められる」という現象によって実行することができません。
つまり、この不具合を解決してくれるプラグインのインストールも、この不具合によってできないという八方塞がりになるといったケースです。
…
更新の手順
「FTP情報」を求められ、更新を弾かれる原因は、WordPress本体・プラグインの更新、プラグインインストールの更新の手順として、「更新」ボタンを押すと、更新のzipファイルをダウンロードして、サーバーにアップロードされて解凍され、インストールされるというステップがあり、この「アップロード」に関して「自動で悪意のある変なファイルがアップロードされては困る」とのセキュリティの面から、情報を求めて弾いていることが原因です。
でも、本体やプラグインの更新の際のファイルアップロードは「FTP情報」を求めてくるものの、画像などの「メディア」のアップロードなどは、特に何も情報を求められることはありません。
ということは、すべてのアップロードに対して制限を設けているわけではないということでしょう。
一般的に接続情報を求められるこの手の問題は、「ファイル・フォルダを生成したオーナー」と、現在の「スクリプトの実行ユーザー」とが異なると判断された場合などに起こります。
こうした現象をバイパスするためには以下のような方法があります。ただし、WordPress本体のコアファイルにあたる部分を操作することになるため、操作には十分注意し、自己責任で操作の判断をお願いいたします。
wp-config.phpを操作する
SSHでファイル自体にはアクセスできるのであれば、この手の問題を解決する一般的な方法は、wp-config.php内に、接続確認をバイパスするコードを加える方法です。
define('FS_METHOD','direct');
WordPressの構成ファイルを確認してwp-config.php内を編集してください。
functions.phpにフィルターを追記する
WordPress管理画面内での操作であれば、フィルターを設置してFTP接続確認をパイパスさせます。
function set_fs_method($args) {
return 'direct';
}
add_filter('filesystem_method','set_fs_method');
wp-config.php、functions.phpはWordPressの根幹部分に関する重要なファイルです。
共にファイル操作には十分注意してください(責任は負いかねます)。
なお、これら操作はセキュリティの脆弱性等が生じることがあります。
管理者が変わる可能性がある場合は、
予めコードを加えておくと無難
管理画面上でまったくプラグインインストールなどができていないかと思えば、いくつかはインストールされていたため、最初にWordPressサイトを制作された制作者の方の環境だとこの問題は生じないのかもしれません。
このケースの不具合修正のご依頼は、二次三次受けのケースが多く、元請け会社がサーバー環境の設定とWordPressインストールを行い、WordPressテーマファイル作成やプラグインのインストール・設定といったWordPressの仕上げを外注へと発注した際に起こることが多いようです。
弊社は、WordPressのカスタマイズサービスなども提供しておりますが、本体バージョンとWordPress関数やプラグインバージョン互換の関係上、本体やプラグインを更新する必要が生じることがあります。
その際にも、こういった不具合がまれに起こることがあります。
WordPressの更新を常時行う予定で、外注や管理者変更などの可能性がある場合は、上記コードなどを予め挿入しておくほうが無難なのかもしれません。
といっても、あまりにWordPressのバージョンが現行のものとかけ離れていると、phpバージョンやテーマの互換性などの問題がありますので注意が必要です。
(初回投稿日 2016年8月15日)