CentOS6でPHP5.2.17を扱えるDockerファイルを書いた

修正箇所

以前、PHP5.1.6用のDockerfileを書きました。

今回は、PHP5.2.17用のDockerfileです。

ftp.riken.jp にはPHP5.2.17用のRPMはありませんでした。

ftp.pbone.net にphp52-5.2.17のRPMを見つけたので、該当箇所を編集しました。

Dockerfile

FROM centos:6.6 MAINTAINER aoki_makoto # TimeZoneの設定 RUN echo 'ZONE"=Asia/Tokyo"' > /etc/sysconfig/clock # yumアップデート RUN yum -y update # apacheのインストール RUN yum install -y httpd # apacheの設定 RUN rm -rf /etc/httpd/conf.d/welcome.conf RUN sed -ri '/<Directory "\/var\/www\/html">/,/<\/Directory>/s/ AllowOverride None/ AllowOverride All/' /etc/httpd/conf/httpd.conf && \ sed -ri '/<Directory "\/var\/www\/html">/,/<\/Directory>/s/ Options Indexes FollowSymLinks/ Options Indexes FollowSymLinks Includes/' /etc/httpd/conf/httpd.conf && \ sed -ri 's/DirectoryIndex index.html index.html.var/DirectoryIndex index.html index.shtml index.html.var/' /etc/httpd/conf/httpd.conf # remiリポジトリの登録 RUN rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm && \ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # wgetのインストール RUN yum install -y wget grep less tree # libcurlをインストール(php5.1インストールに必要) RUN yum install -y libcrypto.so.6 libssl.so.6 openssl098e-0.9.8e && \ wget ftp://rpmfind.net/linux/remi/enterprise/5/remi/x86_64/compat-libcurl3-7.15.5-3.el5.remi.x86_64.rpm && \ rpm -Uvh compat-libcurl3-7.15.5-3.el5.remi.x86_64.rpm # mysql5.0のインストール(php5.1インストールに必要) RUN yum install -y libpcap RUN yum install -y perl perl-DBI perl-Exporter perl-Fcntl perl-File perl-Getopt perl-IPC perl-Sys perl-strict RUN wget https://ftp.riken.jp/Linux/centos-vault/5.7/updates/x86_64/RPMS/mysql-5.0.95-1.el5_7.1.x86_64.rpm RUN rpm -Uvh mysql-5.0.95-1.el5_7.1.x86_64.rpm # php5.2関連ファイルをダウンロード RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-cli-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-common-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-gd-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-mbstring-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-xml-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-pdo-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-devel-5.2.17-6.ius.centos5.x86_64.rpm RUN wget ftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/CentOS/5/x86_64/php52-mysql-5.2.17-6.ius.centos5.x86_64.rpm # php5.2のインストール RUN yum localinstall -y \ php52-5.2.17-6.ius.centos5.x86_64.rpm \ php52-cli-5.2.17-6.ius.centos5.x86_64.rpm \ php52-common-5.2.17-6.ius.centos5.x86_64.rpm \ php52-gd-5.2.17-6.ius.centos5.x86_64.rpm \ php52-mbstring-5.2.17-6.ius.centos5.x86_64.rpm \ php52-xml-5.2.17-6.ius.centos5.x86_64.rpm \ php52-pdo-5.2.17-6.ius.centos5.x86_64.rpm \ php52-devel-5.2.17-6.ius.centos5.x86_64.rpm \ php52-mysql-5.2.17-6.ius.centos5.x86_64.rpm # phpの設定 RUN sed -ri 's/;date.timezone =/date.timezone = Asia\/Tokyo/' /etc/php.ini && \ sed -ri 's/display_errors = Off/display_errors = On/' /etc/php.ini && \ sed -ri 's/post_max_size = 8M/post_max_size = 100M/' /etc/php.ini && \ sed -ri 's/upload_max_filesize = 2M/upload_max_filesize = 100M/' /etc/php.ini && \ sed -ri 's/;mbstring.language = Japanese/mbstring.language = Japanese/' /etc/php.ini && \ sed -ri 's/;mbstring.internal_encoding = EUC-JP/mbstring.internal_encoding = EUC-JP/' /etc/php.ini && \ sed -ri 's/;mbstring.http_input = auto/mbstring.http_input = pass/' /etc/php.ini && \ sed -ri 's/;mbstring.http_output = SJIS/mbstring.http_output = pass/' /etc/php.ini && \ sed -ri 's/;mbstring.encoding_translation = Off/mbstring.encoding_translation = Off/' /etc/php.ini # SSHDのインストール RUN yum -y install openssh-server # SSHDの設定 RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \ sed -ri 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config # rootユーザーのパスワード変更 RUN echo 'root:root' | chpasswd # supervisordのインストール RUN yum install -y supervisor # supervisordの設定 RUN touch /etc/supervisord.conf RUN echo '[supervisord]' >> /etc/supervisord.conf RUN echo 'nodaemon=true' >> /etc/supervisord.conf RUN echo '[program:sshd]' >> /etc/supervisord.conf RUN echo 'command=/etc/init.d/sshd start' >> /etc/supervisord.conf RUN echo '[program:apache]' >> /etc/supervisord.conf RUN echo 'command=/usr/sbin/apachectl -DFOREGROUND' >> /etc/supervisord.conf COPY etc/php.ini /etc/php.ini RUN chown apache:root /var/lib/php/session EXPOSE 22 80 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]

xDebug

print文デバグもよく使いますが、どのファイルのどこを通っているかを調べるのは、デバッガでステップ実行しながら追跡したほうが効率的です。また、$_POSTや$_COOKIE、$_SERVERも調べやすいですね。

まず、PHP 5.2.17用のxdebugのRPMを探しましたが、見つかりませんでした。

次に、XAMPP for Linuxにxdebug.soがあるかもしれないと思い、次の2つをダウンロードして調べました。

5.2.x系つながりで、XAMPP for Linux 1.7.1 (PHP 5.2.9)。

リリース日が近いということで、XAMPP for Linux 1.7.4 (PHP 5.3.5)。

残念ながら、標準のtgz、develのtgz、どちらにも xdebug.so は入っていませんでした。

残念!xdebugがないから、print文デバグね

リリースPHPXAMPP for Linux
2006-11-02PHP 5.2.0
2009-04-131.7.1 (PHP 5.2.9)
2009-06-30PHP 5.3.0
2009-08-011.7.2 (PHP 5.3.0)
2009-12-201.7.3 (PHP 5.3.1)
2011-01-06PHP 5.2.17、PHP 5.3.5
2011-01-251.7.4 (PHP 5.3.5)

参考記事

CentOS6でPHP5.1.6を扱えるDockerファイルを書いた(WordPress向け) - Qiita
WordPressの仕事をしていると、稀にPHP5.1.6とかが動いているサーバーのお客さんから依頼を頂くことがあったりする。 できれば開発環境はお客さんのサーバーと一緒の状態で開発したいので、PHP5.1+MySQL5.0の環境を...
タイトルとURLをコピーしました