DockerでPHP7の環境を構築してみる2


前回、ホスト側のディレクトリにコンテナのルートディレクトリをマウントして、

ホスト側のディレクトリにSOY CMSを突っ込んで動かしてみたけど、

エラーで動かなかった。


というわけで、

いろいろと頑張ってみた。




Fatal error: Uncaught Error: Call to undefined function mb_language() in /var/www/html/cms/common/config/php.config.php:5 Stack trace: #0 /var/www/html/cms/common/common.inc.php(13): include_once() #1 /var/www/html/cms/admin/index.php(2): include('/var/www/html/c...') #2 {main} thrown in /var/www/html/cms/common/config/php.config.php on line 5

これは前回表示されたエラー

これを回避するためにはmbstringが利用できなければいけないらしいので、

Dockerfileにmbstringのインストールを追加して再ビルド。


再度コンテナを作成して動かしてみたら、

新たな不具合が出てきたので、いろいろと修正した。


再度、開いてみたら、


phpseven_soy_init


いけた!


初期管理者を作成して、サイトまで作ってみたけど、

一応動く様だ。


更にいうと、処理は噂通りの爆速だ。

もう、PHP5系統に戻りたくない


このサイトもPHP7にしたい!


動かなかった点といえば、

ファイルマネージャとして利用しているelfinderが動かないことぐらいで、

ここはどうしようかなと…


とりあえず、今回行ったことをまとめると、


Dockerfileを開き、下記の様に修正。


#ubuntu 最新版
FROM php:apache

RUN apt-get update
RUN docker-php-ext-install mbstring

#コンテナに入った後の編集が大変なので、emacsを入れておく
RUN apt-get install -y emacs24-nox

#エラーメッセージは表示できるようにしておきたい
COPY php.ini /usr/local/etc/php/php.ini

Dockerfileと同階層にphp.iniを作成しておき、


error_log=/var/log/apache2/error.log
error_reporting=E_ERROR | E_WARNING | E_PARSE
display_errors=1
log_errors=0

エラーログあたりを表示できる様にしておく。


ここまでできたら、Dockerfileがあるディレクトリで


#コンテナイメージの再ビルド
docker build -t phpapp .

#phpappのイメージからコンテナを作成 ポートは8080
docker run -it -v /home/saito/workspace/docker/php7:/var/www/html -p 8080:80 phpapp

これで終わり。


あとは、http://localhost:8080/cms/adminを開き、


phpseven_soy_init


この表示を確認する。


今回、PHP7の表示用に修正したSOY CMSはGitHubに置きました。

https://github.com/inunosinsi/soycms


利用しやすい様にちょくちょく手を加えていく予定です。