DockerにWordPressをインストールした際のアップロード上限は2MB になっています。
2MBだとテーマやプラグインのアップロードで不都合が出てきますので、
2MBの制限を解除する方法を解説します。
こんにちは18年以上ITエンジニアを行っているよこやまです。
詳しいプロフィールはこちら
目次
自分のWordPress Dockerディレクトリ
ご自身の環境によってDocker内のUbuntuディレクトリが異なります。
わたしの場合を記載しておきます。
Ubuntu
┗home
┗yokoyama(ユーザー名)
┗docker
┗wp(WordPressフォルダ)
ですのでコマンド上の表示はこうなります。
yokoyama@xxxx:~/docker/wp$
Dockerのコンテナ名を調べる
まずWSL内のUbuntu(またはDocker内)にてDockerのコンテナ名を調べる
Dockerのコンテナ名を調べるコマンド
$ docker ps
コンテナ名のコマンド結果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ca12aec0c13 phpmyadmin:latest "/docker-entrypoint.…" 9 minutes ago Up 3 seconds 0.0.0.0:8881->80/tcp WPphpMyAdmin
94ad9a5bc889 wordpress:php8.0 "docker-entrypoint.s…" 9 minutes ago Up 3 seconds 0.0.0.0:8081->80/tcp wordpress
8a018a49934b mariadb:latest "docker-entrypoint.s…" 9 minutes ago Up 4 seconds 3306/tcp WPmariadb
一番右にある「NAMES」(コンテナ名)をメモ
- wordpress
例えば「NAMES」が「WPCWordpress」となっていたら「WPCWordpress」とメモしておく
php.iniファイルをDocker内に作る
どこでも良いですが、Docker内にphp.iniファイルを作成します。
今回は、WSL内のDockerフォルダへ移動しました。
Docker内のフォルダへ移動する
例えば
$ cd docker/wp
このコマンドでdockerフォルダにあるwp(WordPress)フォルダへ移動します。
Dockerフォルダへ移動した結果
$ cd docker/wp
yokoyama@xxxx:~/docker/wp$
vi(Vim)コマンドが使えない場合
このあとvi コマンドを使ってファイルを編集するのですが、Vimが入ってなく動作しない場合があります。そんなときは
$ apt-get update
$ apt-get install vim
After this operation, x.x MB of additional disk space will be used.
Do you want to continue? [Y/n]
このコマンドでインストールをします。
- [Y/n]
Yを入力するとYesの意味でインストール続きが始まります。
空のphp.iniファイルを作成する
次に制限解除するため、空のphp.ini を作成する
$ vi php.ini
このコマンドで【空のファイル】が表示されるのでファイルの中身に記述する
php.iniファイルに記述する内容
ファイルの中身に記述する内容は
upload_max_filesize = 1000M
post_max_size = 1000M
この2つを記述する
- もっと容量を多くしたい場合は 50M を 1000M と記述します。
保存するには
- ESC(エスケープキー)押して
- 「:」コロン押して
- 「w」ダブリュー押して 書き込み
- 「:」コロン押して
- 「q」キュー押して終了
「:wq」でいっぺんに保存して終了も可能です。
次に作成したphp.iniファイルを該当するWordPressのコンテナへコピーします。
このときエラーで保存できない場合があります。
そんなときは強制保存の
- 「:wq!」
先ほどの:wpの後ろに 「!」マークを入れると強制上書きになります。
保存できないエラーが出たときは覚えておいてください。
作成したphp.iniファイルを該当するコンテナへコピーする
Dockerのコンテナ名を調べるコマンド
最初にも確認したDockerのコンテナ名を調べるコマンド
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ca12aec0c13 phpmyadmin:latest "/docker-entrypoint.…" 9 minutes ago Up 3 seconds 0.0.0.0:8881->80/tcp WPphpMyAdmin
94ad9a5bc889 wordpress:php8.0 "docker-entrypoint.s…" 9 minutes ago Up 3 seconds 0.0.0.0:8081->80/tcp wordpress
8a018a49934b mariadb:latest "docker-entrypoint.s…" 9 minutes ago Up 4 seconds 3306/tcp WPmariadb
作成したphp.iniを
該当するWordPressで使っているDockerコンテナへコピーするコマンド
- 先ほどメモしたコンテナ名「wordpress」
この部分は人によって異なるので注意 - 例えば先ほどのコンテナ名のメモ「NAMES」が「WPCWordpress」となっていたら「docker cp ./php.ini WPCWordpress:/usr/local/etc/php/php.ini」と記述する
yokoyama@xxxx:~/docker/wp$ ← 今このフォルダにいる状態で下記コマンド
$ docker cp ./php.ini wordpress:/usr/local/etc/php/php.ini
コンテナの再起動
php.iniファイルのコピーが完了したらコンテナの再起動
$ docker compose restart
コマンドで再起動できない場合は
Dockerのアプリ自体からRestart(再起動)しても同じです。
- DockerアプリのContainers > Action にある「■」停止ボタンを押す
- 停止を確認したら
- DockerアプリのContainers > Action にある「▶️」停止ボタンを押す
- 起動が完了
再起動したらアップロード容量が増えてます。
再起動したら、自分のDockerにあるWordPressへアクセスして確認してみます。
この様にアップロード上限ファイルサイズが50Mにすることが出来ました。
大抵の場合はこのサイズで大丈夫ですが足りないようでしたら
- upload_max_filesize = 50M
- post_max_size = 50M
この 50M 部分を 100M などに変更することでアップロード上限ファイルサイズを変更できます。
WordPres+Dockerのパーミッション問題に悩んだら
フォルダの所有権グループを変更しておく
yokoyama@xxxx:~/docker/wp$ ← 今このフォルダにいる状態で下記コマンド
$ sudo chmod -R 707 wordpress/html/wp-content
wp-config.phpに追記しておく
define('FS_METHOD', 'direct');
プラグインやテーマのアップデート、WordPressのアップデートでFTP情報が表示されてしまう場合は
上記のコードをwp-config.phpに記述しておく。最終行で良い。
WordPres DockerのPHPMyAdminでエラーが出て表示できないとき
sessions フォルダの所有権グループを変更しておく
yokoyama@xxxx:~/docker/wp$ ← 今このフォルダにいる状態で下記コマンド
$ mkdir -p phpmyadmin/sessions
$ sudo chmod -R 777 phpmyadmin/sessions
このコマンドを入れて sessions に書き込みできる様にしておく。
WordPres+Dockerで公開に失敗しました。 返答が正しい JSON レスポンスではありません。とエラーが出る場合
これはパーマリンクが上手くいってない場合か、htaccessの記載がない場合におこりますので
- ダッシュボード>設定>パーマリンク>変更を保存
なにも変更しないでパーマリンクの【変更を保存】をクリックして保存することで解消します。
エラーが解消しない場合は.htaccess に記述
エラーが解消せず、固定ページや投稿ページに書き込みができない場合は
.htaccessに以下を記述
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
上記を記述して保存すると解消します。
.htaccessを追加したあと、念のため
上記記載のパーマリンク>【変更を保存】も行ってください。