WordPressのアップグレードやプラグインの更新をFTP画面なしで行う方法
WordPressのバージョンアップを行おうとしたり、プラグインのアップグレード(更新)を行おうとしたときに、以下のようなFTPの接続情報を入力する画面が表示されることがあります。
そのままFTP情報を入力すればいいのでしょうが、私の使用しているサーバではFTPサーバが動いていないので、何とかFTPの入力なして先に進めないかなーと思ったら、ありました。
複数の方法があるので、メモしておきます。

FTPサーバ情報の入力が求められる理由
実は、Wordpressでは、FTPサーバがないとアップグレードできないというわけではありません。
現に、セキュリティ的に問題がなければFTPサーバの情報入力のダイアログすら表示されないのです。
その条件とは、「Wordpressのディレクトリのownerがphp(httpd)実行ユーザと同一であること」です。
WordPressでは、「wp-admin/includes/file.php」で以下のように一時ファイルの作成と、そのファイルのownerとphp実行者が同じかを判定して、同じであれば、Wordpress配下のフォルダに、アップグレードするために必要なファイルを作成したり、更新したりしても問題ないと判断します。
もし、同一でなければ、セキュリティ的に危険だと判断して、FTP経由でファイルのアップロードや更新を行おうとするわけです。
方法① Ownerを同じにする
上記の理由から、Wordpressのディレクトリのownerをhttpd(Apache)ユーザとグループと同じにすると、FTPのダイアログは出なくなります。
CentOSなどでは、httpdユーザとグループはapache:apacheなので、以下のようなコマンドで同一にできます。
$ chown -R apache:apache <WordPressのディレクトリ>
これは、コマンドが実行できるVPSなどでは有効な方法です。
もし、実行してもFTPの画面が表示されている場合は、ユーザ名とグループ名が違うのかもしれません。
その場合は、apache(またはwordpressが動いているWebサーバ)の設定ファイル等で確認してみてください。
(⇒確認の方法は、この記事に書いておきました。)
方法② 判定なしに、強制的にFTP画面を表示させないようにする
環境によってはコマンドを打ったりするのが難しい場合があります。その場合は、以下のように、
define('FS_METHOD', 'direct');
というスクリプトを、wp-config.php ファイルに書き足します。
上記の「wp-admin/includes/file.php」内で「$method = ‘direct’;」としている箇所がありましたが、この方式をdirectにすると、FTP画面が表示されなくなります。
注意点は、セキュリティ的には脆弱であることと、php実行者とフォルダownerの権限が異なっているのを承知でファイル書き込みを行おうとするので、ファイルの書き込み権限がないとエラーになってしまうことです。
タグ:wordpress
[…] 事「WordPressのアップグレードやプラグインの更新をFTP画面なしで行う方法」を参考にしてください。 […]