WordPressを更新しようとしたらFTP情報の入力画面が出て先に進めない場合の解決方法

wordpressをアップデートしようとしたり、プラグインをインストールしようとしたら、FTPの接続情報入力を促すメッセージが出て先に進めない状態になりました。
FTPを使っているわけでもないのに、入力を求められても「なんで??」って感じになってしまいますよね。
WordPressはプラグインを色々と入れないと、最適な環境にならないので、これが解決しないと色々と困ったことになります。
この場合の解決方法を記しておこうと思います。
目次
現象
WordPressの更新表示が出たので、
↓
更新しようとしたら、、、
↓
「FTPの接続情報を入力しろ」とのメッセージが表示されて、次に進めない。
表示されたメッセージ
要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります。 次に進むには FTP の接続情報を入力してください。 接続情報が思い出せない場合は、ホスティング担当者に問い合わせてください。
このエラー表示は、WordPressのファイルシステム編集に使われるAPIが共通して利用する、「直接書き込めなかったときの対策」的なページです。
今回のようにWordPress自体のアップデートを行う際や、プラグインのインストールや更新時に発生する可能性があります。
原因
このエラーは、サーバーでファイルを作成したり、編集しようとしてみたところ、パーミッション(ファイルの読み書き許可の設定)の問題で、失敗してしまったことが原因で表示されます(その他、余計な設定・指定の可能性もあるが、多くはパーミッションの問題)。
解決方法
解決方法1 コマンドでパーミッション(所有権)を変更する
WordPressを設置しているサーバーのrootコマンドが使える場合には、この方法をオススメします。
chownでWordPressのファイルパーミッション(所有権)を変更する
$ sudo chown -R nginx path/to/wordpress
※ここではサーバーの実行ユーザーとして「nginx」にしていますが、「apache」だったり、他にもレンタルサーバ-業者や設定次第で、色々な可能性もあります。
解決方法2 フィルターフック「filesystem_method」を使う
テーマのfunctions.phpに以下の記述を追加する方法もあります。
1 2 |
function set_fs_method($args) { function set_fs_method($args) { return 'direct';}add_filter('filesystem_method','set_fs_method'); |
『wp-admin/includes/file.php』内では『filesystem_method』というフィルターフックを使って、この部分の条件分岐をしています。そこにフックして『direct』を入れてやることで、問題の画面が表示されなくなります。
解決方法3 wp-config.phpを変更する
wp-config.phpに以下の1行を追加します。場所はファイル内のどこでも良いです。
1 |
define('FS_METHOD', 'direct'); |
まとめ
それぞれ3つの方法で解決できるのですが、環境によって1つの方法をやってもうまくいかない場合があるので、
その場合は、上記3つ全てを試してみてください。