はじめに
WordPress に Cocoon をインストールする際、WordPress をホストしているサーバの設定が初期状態のままだとアップロードに失敗するケースがあります。 本記事は起きるエラーと原因、その対処法を説明します。
起きるエラー
XServer レンタルサーバー では初期状態でも発生しません。WordPress コンテナを使った場合にのみ発生します。Cocoon テーマのアップロード時に発生するエラーは以下の画面のものです。

「辿ったリンクは期限が切れています。」という文言なので WordPress の構築や設定に問題があるように感じますが、実際はそうではありません。
原因
ini ファイルという設定ファイルに定義された upload_max_filesize と post_max_size の値が小さいことです。
Cocoon 親テーマは約 22 MB ですが、上記の設定はデフォルトで以下の状態です。
|
|
なお、upload_max_filesize のみを変更してもエラーは解消しません。どちらもエラーの原因です。
対処法
以下の通り変更します。
|
|
1G は大きすぎる値に感じますが、XServer の初期設定です。XServer は様々なお客様が利用した膨大なユースケースに応じた設定になっているはずなので、1G でほぼ問題が起きることはないということでしょう。
手順
PHP だと /usr/local/etc/php/php.ini が上記の設定ファイルですが、以下の箇所に配置しても反映されません。
|
|
WordPress ではさらに深い /usr/local/etc/php/conf.d の中の wordpresss.ini で設定されます。
|
|
もちろん docker exec wordpress xxx のようにコンテナ内でコマンドを実行して変更する方法もありますが、これはコンテナ再作成に伴い元に戻るので、突然またアップロードできなくなる可能性があります。
このため、ローカル環境に置いてある wordpress.ini をコンテナの該当ディレクトリに配置する方式を取ります。
まずは手元に wordpress.ini を用意します。デフォルトではコンテナ内に wordpress.ini は存在しないため、代わりに php.ini-production を再利用します。
|
|
これで手元に wordpress.ini が作成されます。次に、2つの設定値を変更します。これは上述の通り 1G などに変更するといいです。
最後に compose.yml (docker compose のための設定ファイル) に以下の通り記述します
|
|
volumes によってこの設定ファイルと同じディレクトリ内にある wordpress.ini が /usr/local/etc/php/conf.d/wordpress.ini に配置されます。
これで WordPress 上に Cocoon テーマをインストールできるようになります。
おまけ
Cocoon は低サイズ版のテーマを用意しており、そちらであれば初期設定でも、また設定を変更できない環境でもアップロードできます。なので、普段からコンテナを利用しておりどうしてもコンテナ化したい場合以外は低サイズ版をアップロードするのが早いでしょう。
ほかの方法として、Custom PHP Settings プラグインを利用する方法があります。このプラグインは、起動しているサーバ上の ini ファイルを画面から編集できるようにするものです。ややこしい設定ファイルをいじる必要がないので、楽に変更できます。ただし、コンテナ環境の場合は再作成でもとに戻るため注意が必要です。