WordPressで自動アップグレードができない条件

2013年3月4日

ここ数日考え込んでたこと。今でも謎が解決できていないのですが。
間違っていたらごめんなさい。指摘していただけると助かります。

WordPressの自動アップグレードはFTP環境が必須

らしいのですよ。

WordPressの管理画面(前々回キャプチャしたWPログイン後の画面)からWordPressのバージョンをアップグレードしたり、プラグインを検索してインストールするには、FTPが利用できる環境でないといけない模様。
FTPだとセキュリティ的に不安だから~といった理由でSCPでファイル転送を行っている場合は、このワンクリックでの自動アップグレードが効かず、FTP接続情報の入力を促されるようで。ここからの自動アップグレードをしないのならば、サーバーにログインして手動で行うしかないんだとか。
でもそれは面倒だから、FTPには接続しないけど自動アップグレードするためにこんな設定を!と試行錯誤されている記事が沢山あるんですよね、検索すると。

しかし…私のOsukiniサーバーは管理画面からできちゃいました。WordPress自体は最新のものをインストールしてしまったのでバージョンアップの動作は未確認ですが、プラグインのインストールはすんなりと。

Osukiniサーバーのデフォルト設定ではFTPのポートは閉じているのに、なぜ??
自分でも意識しないうちに設定してしまっていたの?

ディレクトリの所有者をApache実行ユーザーにする

アップグレード時に「接続情報」という画面が表示される場合の対処法として、WordPress Codexにはこのように書かれていました。

Problem
After clicking on “automatic upgrade” you get a dialog box asking for “Connection Information”. And, no matter what you enter, you continue to get errors.
Solution
Make sure that your entire wordpress directory is owned by the username under which your Apache server runs. For example, if your server runs as https, and your files live in /var/wordpress do a “chown -R apache.apache /var/wordpress.” Note that you might want to edit some permissions for security purposes, in particular a chmod 640 on wp-config.php, to protect access information to your database.

  • WordPressディレクトリの所有者がWEBサーバーの実行ユーザーかどうか確認
    例) HTTPSサーバーでWP関連ファイルが”/var/wordpress”の中にあるなら、コマンドで”chown -r apache.apache /var/wordpress”を実行
  • パーミッションの変更をする場合はwp-config.phpを640にする
    セキュリティ上DBへのアクセス情報は保護すること
ふむ。
私はWordPressインストールの段階でディレクトリ全体の所有者をApache実行ユーザーにしていました。これのせいかな…?
ついでにブラウザ操作で自動生成されたwp-config.phpのパーミッションを確認してみると
# ls -la /var/www/html
-rw-rw-rw- 1 apache apache  5 Feb 24 19:09 wp-config.php
これは…666。オーナーでもグループでもユーザーでも読み書きOK状態。…直しておこう。
# chmod 640 wp-config.php

FTP接続しないでWordPressを自動アップグレードする方法

私は今のところ問題ないので検証はしていませんが、他にも方法はあるようです。

phpでssh2を使えるようにする

といろいろ出てくると思います(超人任せでごめんなさい)。
WordPressでsshを使えるようにするには、PECLssh2の導入が必要。ssh2をインストールするには、libssh2とphp-develが必要。そしてlibssh2にはopenssl-develが必要のようです。
この設定ができると、接続情報の画面が出てきたときにFTPやFTPS以外に「SSH2」という接続形式の選択肢が出てくる模様。

参照: PHP: PECL 拡張モジュールのインストール – Manual