見出し画像

php5系のプログラムをdockerで動かすメモ


FROM php:5.6-apache

RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
RUN sed -i '/stretch-updates/d' /etc/apt/sources.list
RUN sed -i '/security.debian.org/d' /etc/apt/sources.list
RUN apt update

# composer
RUN apt install -y  unzip libzip-dev && docker-php-ext-install zip
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
COPY --from=composer:1 /usr/bin/composer /usr/bin/composer

phpなんとかapacheとかで素直にやった方が楽なんじゃないかな〜。stretchのupdateラインなどはもう使えないのでarchiveに書き直さないといけない。シンプルにしんどい。

またcomposer2も使えないのでcomposer1で

mysql

# mysql module
RUN docker-php-ext-install mysql
#RUN docker-php-ext-install pdo_mysql

古い拡張を入れている。うーん

composer系の対応

まず、PEARを取ってくるのは絶望的っぽいのでcomposer2で入れたりするようにしないといけないかも。でもcomposer2はphp5では動かないからねえ… まあ今動いているもののvendorを丸コピーできないならもう諦めた方がいいかもしれませんね。

jpgraphなんかが入っていた

# GD module
RUN apt install -y zlib1g-dev libpng-dev libjpeg-dev libfreetype6-dev
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install gd

# set timezone
RUN echo 'date.timezone = "Asia/Tokyo"' >> /usr/local/etc/php/conf.d/docker-php-timezone.ini;

まともに日本語で動かしたいなら fonts-ipafont なんかも必要かとは思う

起動後の対応

基本的にはあとはdatabaseと思う

utf8mb4の問題

[Error message: Server sent charset unknown to the client. Please, report to the developers]
[Native code: 2054]

とかいう無慈悲なメッセージが現われる。これはphp5とmysql8だとほぼ確実に現われる。これに関しては

ってわけで、ローカルの場合はmy.cnfとかで対応するがawsの場合はパラメーターセットで対応。ここではawsを見てみよう(まあ、案件がawsなので)

awsのパラメーターセット

awsの場合パラメーターセットが無い場合は新規に起こす必要がある


このようにmysql8用のデフォルトをまず適当な名前つけて保存する。ここではtest としている


そしたら character_set_server を探してだしてきて値を変更する。ここではutf8をセットする


utf8をセットした


そしたらこのパラメーターグループを当該Databaseに適用していく

defaultから変更したtestに切り替えていく
Modifiedの文字が見える


そしたらこの「Modifyしたパラメーターセット」を既存のDBに割り当てていくぞい

defaultからtest(modifyしたやつ)に変更してる


DBの変更は結構時間がかかる。適当なDBなら強制再起動してもいいかも。

この時に当該DBのパラメーターグループを見て正しく「同期中」となっている事を確認すること。


この記事が気に入ったらサポートをしてみませんか?