Dockerで用意したWordpressの更新時にftp情報入力画面が要求されるとき

Dockerでwordpressを構築した時に開発ディレクトリを volume でマウントしたのですが、更新時にftp情報入力画面が出て困ってしまいました。

ネットを参考にユーザーID・グループIDを書き換えたり、wp-contentの書き込み権限を書き換えたりしましたがあまりうまくいかず、wp-config.phpの設定に書き足す方法を使うことにしました。

「接続情報の入力」をコンテナ立ち上げ時、立ち上げ後それぞれで回避する方法のメモです。

コンテナ立ち上げ時に設定する

docker-compose.ymlの設定でwp-config.phpdefine("FS_METHOD","direct");を書き足します。

Dockerの公式wordpressイメージを使う場合の設定です。

WORDPRESS_CONFIG_EXTRA環境変数を利用して、wp-config.phpファイルの設定値を定義することができます。

version: "3"
services:
  wordpress:
    /* 省略 */ 
    environment:
      WORDPRESS_CONFIG_EXTRA: |
        define("FS_METHOD","direct");

こうすることでwp-config.phpdefine("FS_METHOD","direct");が付け足され、ftp情報入力画面が出なくなります。

コンテナ立ち上げ後に設定する

既に立ち上げたコンテナを後から変更する場合も、wp-config.php の最後にdefine('FS_METHOD', 'direct');を書き足します。

まずコンテナIDをdocker psで調べて、docker execでコンテナに入ります。

> docker exec -it コンテナのID /bin/bash

wp-config.phpdefine("FS_METHOD","direct");を書き足します。

# echo 'define("FS_METHOD","direct");' >> /var/www/html/wp-config.php

これでftp情報入力画面は出なくなるはずです。

define("FS_METHOD","direct");とは

define("FS_METHOD","direct");については下記参照。

wp-config.php の編集 - WordPress Codex 日本語版

FS_METHOD ファイルシステム方式の強制。有効な値は「direct」「ssh2」「ftpext」「ftpsockets」です。一般にアップデートで問題が発生する場合にのみ変更してください。変更してもうまく動作しない場合は元に戻すか削除してください。自動的に選択されたファイルシステム方式が動作しない場合、ほとんどの環境では「ftpsockets」に設定すると解決します。注意: ここでの選択はセキュリティ上重大な影響を与えます。よく分からない場合はまず管理者に問い合わせてください。

(最優先) "direct"
PHP からダイレクトファイル I/O リクエストの使用を強制します。デフォルトではこのオプションが選択されます。

(2番目の優先度) "ssh2" インストールされていれば SSH PHP 拡張モジュールの使用を強制します。

(3番目の優先度) "ftpext"
FTP アクセス用 FTP PHP 拡張モジュールの使用を強制します。

(4番目の優先度) "ftpsockets"
FTPアクセス用 PHP ソケットクラスを使用します。