wordpressコンテナのphp.ini
Dokcerの公式wordpressコンテナではphp.iniは最初からは存在せず、使うなら自分で用意する必要があります。
しかしながら、php.ini
を1から作る必要はありません。雛形が用意されています。1から作ったら日が暮れてしまいますよね。
雛形はphpがインストールされた場所に入っているはずです。
php.iniの用意
wordpressコンテナではphpは/usr/src/php
にインストールされています。
このディレクトリに
php.ini-development
php.ini-production
という2つの雛形が入っています。名前からわかるようにphp.ini-development
は開発時用に推奨されるもの、php.ini-production
は本番時に推奨されるもののようです。
雛形の違い
どう違うのがdiff
コマンドで比べてみました。
diff php.ini-development php.ini-production
86c86
< ; This is php.ini-development INI file.
---
> ; This is php.ini-production INI file.
449c449
< error_reporting = E_ALL
---
> error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
466c466
< display_errors = On
---
> display_errors = Off
477c477
< display_startup_errors = On
---
> display_startup_errors = Off
521c521
< track_errors = On
---
> track_errors = Off
1244c1244
< mysqlnd.collect_memory_statistics = On
---
> mysqlnd.collect_memory_statistics = Off
主にエラー関係の設定が違うようですね。
設定項目 | 意味 | development | production |
---|---|---|---|
error_reporting | エラー出力レベル | E_ALL | E_ALL & ~E_DEPRECATED & ~E_STRICT |
display_errors | エラー出力 | On | Off |
display_startup_errors | PHPの起動時エラー表示 | On | Off |
track_errors | $php_errormsgへの代入 | On | Off |
mysqlnd.collect_memory_statistics | メモリ統計情報の収集 | On | Off |
php.ini-development
では開発時のデバック用途のため、エラーを表示したりトレースしたりできるようになっています。
ただエラー情報の外部公開はなにかと危険です。思わぬところから攻撃の緒を与えてしまうかもしれません。
本番公開時にはエラー情報を表示させないphp.ini-production
を使った方が良いと思います。
コンテナにphp.iniを入れる
wordpressコンテナでphp.ini
を使いたい場合はdockerfileの書き換えするのもいいですが、dokcer cp
コマンドでコンテナから雛形を引き抜き、ホスト側で編集して、再度docker cp
コマンドで所定の位置に入れる方法が一時的用途としては楽です。
コンテナの中に/bin/bash
で入ってみて確認しましたが、、公式のwordpressコンテナのphpのローディングディレクトリは/usr/local/etc/php/
になっているかと思います。
root@97c64239e1e9:/# php -r 'phpinfo();' | grep php.ini
Configuration File (php.ini) Path => /usr/local/etc/php
ホストで編集したphp.ini
をここにぶち込んでコンテナを再起動するとphp.ini
が読み込まれるはずです。
補足・ハマったポイント
wordpressで画像なり記事のxmlなりをアップロード(インポート)する際に、php.ini
を入れていない場合は初期値が2MB
なので、少し大きめなファイルはアップロードできない可能性が出てきます。
php.ini
で上限容量を指定してあげる必要が出てくるかもしれません。ちなみに上限容量の設定項目は
post_max_size
upload_max_filesize
意味は以下です。
設定項目 | 意味 | 初期値 |
---|---|---|
upload_max_filesize | アップロード上限容量 | 2MB |
post_max_size | POSTデータの上限容量 | 8MB |
ファイルアップロードは2つの項目で制限されています。upload_max_filesize
はまんまファイルの容量の上限、post_max_size
は一回のセッションでPOSTデータとして受け取れる上限です。
upload_max_filesize
を大きくする場合、post_max_size
の制限を越してしまうとpost_max_size
の制限に引っかかります。
upload_max_filesize
を10MB
にしても、post_max_size
の8MB
に引っかかるということですね。
ですので、このupload_max_filesize
を変更する場合はpost_max_size
をupload_max_filesize
より少し大きめにしておくことをオススメします。
指定の方法は、単位はbyte
でB
は省略です。以下の様にしています。
//10MBの指定
upload_max_filesize = 10M
post_max_size = 12M
//1GBの指定
upload_max_filesize = 1000M
post_max_size = 1050M
まとめ
- wordpressコンテナではphp.iniは初期状態では用意されていない
- しかし雛形が開発用・本番用の2種存在する
- 違いはエラー関係の表示が主
- docker cpコマンドを使うとコンテナ・ホスト間のファイルのやり取りが楽
- アップロードファイルの上限容量はupload_max_filesizeとpost_max_sizeで変更できる