定番ブログエンジンの「WordPress」では、公式のライブラリに登録されている数万件ものテーマやプラグインを管理画面上で検索してインストールできる。しかし、WordPressのセットアップの仕方によっては、インストールボタンを押すとFTPのログイン情報の入力を求められることがある。これはWordPressの正常な動作だが、万が一プログラムに脆弱性があってFTPのパスワードを盗まれでもしたら、サイトを乗っ取られてしまう恐れもあるので、入力をためらってしまう人は多いだろう。
自動インストールを使わなくても、配布ページからダウンロードしたものをFTPでアップロードすれば導入はできるが、何度も繰り返すのは面倒だ。
画像などのファイルはブラウザから簡単にアップロードできるのに、何故プラグインやテーマはFTPアカウントを経由しなければならないのかというと、導入したテーマやプラグインの不具合で管理画面が表示できなくなると、復旧するにはFTPなどからファイルを修正しなければならないからだ。
そのため、WordPressは自身を構成するファイルと自身が生成したファイルのアクセス権限を比較して、WordPressをセットアップした人がWordPressが生成したファイルを上書き・削除出来ない可能性がある場合は、FTPを経由してファイルを書き込むための設定を求めるようになっている。
このような仕組みのため、FTPを経由せずに直接自動インストールできるようにしたければ、WordPressを構成するファイルの所有者やアクセス権を適切に設定すればいい。
また、「wp-config.php」に設定を書き加えて、アクセス権のチェック無しで直接インストールを有効化することも可能だ。WordPressがファイルを作成するときのアクセス権限の設定と合わせれば、生成されたファイルをFTPから上書き・削除することも可能となる。
ただし、これらの方法でアクセス権の制限を緩めると、セキュリティが低下することがあるので注意が必要だ。安全性を重視するなら、多少の手間はかかるが、FTPソフトでの手動アップロードを利用した方がいいかも知れない。
WordPressが作成するファイルがWordPressをセットアップしたユーザーの権限ではFTPなどから上書きや削除を行えない可能性がある場合、テーマやプラグインの「インストール」ボタンを押すと、このようなFTPアカウント情報の入力画面が表示される。
WordPressを設置したWebサーバのFTPアカウント情報を入力すると、WordPress管理画面のプログラムがFTPサーバにアクセスして、ダウンロードしたテーマやプラグインのファイルをアップロードされる。このようにすることで、アップロードされたファイルが確実にFTP経由で上書き・削除できるようになり、不具合で管理画面が表示できなくなっても復旧できなくなる恐れが無くなるのだ。
$ls -l wp-content/uploads drwxrwxrwx 5 apache apache 4096 2015/12/01 00:00:13 2015 $ sudo chown -R apache:apache *
FTPアカウントを経由せずに直接テーマやプラグインをインストールできるようにしたい場合は、WordPressの構成ファイルの所有者を変更すればいい。
一般的なLinux系サーバでファイルの所有者を変更するには、「chown」のコマンドを使う。「-R」オプションでディレクトリの中のファイルまで一括変更可能だ。実行には管理者権限が必要なので、「sudo」コマンドを介して実行しよう。
直接インストールを有効にするためには、WordPressによって作成されるファイルと同じ所有者に設定すればいい。「wp-content/uploads」などのディレクトリを対象に「ls -l」コマンドを実行すれば、WordPressが作成するファイルの所有者を確認できるはずだ。
define(FS_METHOD,'direct'); define('FS_CHMOD_DIR', (0775 & ~ umask())); define('FS_CHMOD_FILE', (0664 & ~ umask()));
WordPressのファイルの所有者を変更せずに直接インストールを有効化するには、wp-config.phpの先頭あたりに「define(FS_METHOD,'direct');」という行を書き加えればいい。
しかし、このままではWordPressがインストールしたプラグインファイルをFTPなどから更新できなくなってしまうので、「FS_CHMOD_DIR」と「FS_CHMOD_FILE」でWordPressが作成するディレクトリやファイルのパーミッション設定を変更し、FTPアカウントでも書き込みや削除が出来るようにしよう。多くの場合は同一グループのアカウントによる書き込みを許可する「0775」と「0664」で十分だが、FTPアカウントのグループ設定によっては、全てのユーザーが書き込みできるように「0777」と「0666」を設定する必要がある。
wp-config.phpに設定を記述した場合でも、「wp-content」や「wp-content/plugins」、「wp-content/themes」のディレクトリのアクセス権の設定によってはインストールに失敗することがあるので、WordPressから書き込みを行えるように設定しておこう。
・wp-config.php の編集 - WordPress Codex 日本語版
適切に設定されていれば、インストールボタンをクリックするとこのような画面が表示され、テーマやプラグインのインストールが自動的に行われる。
ただし、この時点ではまだ有効化されていないので、「プラグインを有効化」などのリンクをクリックして有効化してやる必要があるぞ。