Dockerでwordpressを構築した時に開発ディレクトリを volume でマウントしたのですが、更新時にftp情報入力画面が出て困ってしまいました。
ネットを参考にユーザーID・グループIDを書き換えたり、wp-contentの書き込み権限を書き換えたりしましたがあまりうまくいかず、wp-config.php
の設定に書き足す方法を使うことにしました。
「接続情報の入力」をコンテナ立ち上げ時、立ち上げ後それぞれで回避する方法のメモです。
コンテナ立ち上げ時に設定する
docker-compose.yml
の設定でwp-config.php
にdefine("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.php
にdefine("FS_METHOD","direct");
が付け足され、ftp情報入力画面が出なくなります。
コンテナ立ち上げ後に設定する
既に立ち上げたコンテナを後から変更する場合も、wp-config.php
の最後にdefine('FS_METHOD', 'direct');
を書き足します。
まずコンテナIDをdocker ps
で調べて、docker exec
でコンテナに入ります。
> docker exec -it コンテナのID /bin/bash
wp-config.php
にdefine("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 拡張モジュールの使用を強制します。