CentOS Linux開発環境 汎用スクリプト言語 PHP 5.2.17

(最終更新日時:2012-11-23 20:02:26)
オープンソースの汎用スクリプト言語 PHP 5.2.17 をサーバサイドのアプリケーション開発言語としてインストールします。
2012/11/18時点でのPHPの最新バージョンは 5.4.8 なのですが、当サイトのブログで使用しているCMSシステム Nucleus が一部のプラグインを含め 5.2.x までのバージョンでなければ正常に動作しません。
バージョン5.2.17をソースからコンパイル、インストールして、最新バージョンの5.4.8と共存させるようにします。

事前準備

関連パッケージとして、下記を事前にインストールしておきます。
c-client IMAP/POP3/NNTP関数を使用します
MySQL MySQLデータベースサポートでコンパイルします
PostgreSQL PostgreSQLデータベースサポートでコンパイルします
apache Apache2用の共用モジュールを作成します

GDパッケージを有効にするため、必要なグラフィックライブラリをインストールします。
# yum -y install \
>   libjpeg-devel \                                           # JPEGグラフィックスフォーマット用ライブラリ
>   libpng-devel                                              # PNGグラフィックスフォーマット用ライブラリ

Mcrypt暗号化関数を使用するため、必要なライブラリをインストールします。
# yum -y install libmcrypt-devel

IMAP/POP3/NNTP関数を使用するため 、必要なライブラリをインストールします。
# yum -y install \
>   libc-client-devel \                                       # IMAP拡張モジュール用c-clientライブラリ
>   pam-devel                                                 # PAM認証用ライブラリ
# ln -s /usr/include/imap /usr/include/c-client

ダウンロード

PHPの日本ミラーサイト (http://jp.php.net/) から次のファイルをダウンロードします。
our releases page. - 5.2.17 - php 5.2.17 (tar.bz2)php-5.2.17.tar.bz2

インストール

/usr/local/srcディレクトリでアーカイブを展開し、コンパイルおよびインストールを行います。
--with-apxs2オプションを付けないことにより、モジュール版のPHPは作成されません。
$ cd /usr/local/src
$ wget http://museum.php.net/php5/php-5.2.17.tar.bz2
$ tar jxvf ダウンロード先/php-5.2.17.tar.bz2
$ cd php-5.2.17
$ ./configure \
>   --prefix=/usr/local/lib/php-5.2.17 \                      # 5.2.17のインストールディレクトリを指定します
>   --with-libdir=lib64 \                                     # 64bit環境でのライブラリディレクトリを指定しています
>   --with-mysql=/usr \                                       # MySQLのベースディレクトリを指定します
>   --with-mysqli=/usr/local/bin/mysql_config \               # 拡張MySQLサポートを有効にしています
>   --with-pgsql=/usr/local/pgsql \                           # PostgreSQLのベースディレクトリを指定します
>   --with-imap \                                             # IMAP/POP3/NNTP関数を有効にしています
>   --with-imap-ssl \                                         # SSL対応のIMAP/POP3/NNTP関数を有効にしています
>   --with-gd \                                               # GDモジュールを有効にしています
>   --with-jpeg-dir=shared \                                  # JPEGライブラリを使用します
>   --with-mcrypt \                                           # Mcrypt暗号化関数を有効にします
>   --with-kerberos \                                         # Kerberos認証を使用します
>   --enable-zend-multibyte \                                 # 国際化版の機能を有効にしています
>   --enable-mbstring \                                       # マルチバイト処理を有効にしています
>   --enable-calendar \                                       # カレンダ関数を有効にしています
>   2>&1 | tee configure.log
$ make 2>&1 | tee make.log
$ make test 2>&1 | tee make_test.log
     :
Do you want to send this report now? [Yns]: n
$ sudo make install 2>&1 | tee make_install.log

設定

PHPの設定ファイルをコピーし、設定を変更します。
$ sudo cp -f /usr/local/src/php-5.2.17/php.ini-dist /usr/local/lib/php-5.2.17/lib/php.ini

$ sudo vi /usr/local/lib/php-5.2.17/lib/php.ini
----------(vi ここから)----------
     :
log_errors = On                                               ; エラーをログに出力します
     :
; Log errors to specified file.
;error_log = filename
error_log = /var/log/php/error-5-2-17_log                     ; エラーログのファイル名を指定します
     :
; Maximum size of POST data that PHP will accept.
post_max_size = 32M                                           ; POSTデータの最大サイズを32Mにしています
     :
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off                                        ; ' " \ NULL の自動エスケープ処理を無効にしています
     :
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
include_path = ".:/usr/local/lib/php"                         ; includeファイルの既定ディレクトリを指定しています
     :
; Maximum allowed size for uploaded files.
upload_max_filesize = 32M                                     ; ファイルアップロードの最大サイズを32Mにしています
     :
;session.save_path = "/tmp"
session.save_path = "/var/phpsess";                           ; セッションファイルのディレクトリを変更しています
     :
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8                            ; マルチバイト文字の内部コードをUTF-8にしています
     :
;mbstring.http_output = SJIS
mbstring.http_output = UTF-8                                  ; HTTP出力コードをUTF-8にしています
     :
;mbstring.encoding_translation = Off
mbstring.encoding_translation = On                            ; マルチバイト文字を自動的に内部コードに変換します----------(vi ここまで)----------

HTTPサーバーApache設定

Apacheのmime-typeを追加します。 ※他バージョンのPHPをインストールした際に設定済であれば必要ありません。
$ sudo vi /usr/local/apache2/conf/mime.types
----------(vi ここから)----------application/x-httpd-php         php
application/x-httpd-php-source  phps----------(vi ここまで)----------

PHP 5.2.17で動作させるWebサイトのディレクトリで使用する cgi-bin ディレクトリに、5.2.17のCGI版へのシンボリックリンクを作成します。
当サイトの定義を例にします。
$ # cgi-binディレクトリのシンボリックリンクを有効にします
$ sudo vi /usr/local/apache2/conf/extra/vhosts/www.system-act.com.conf
----------(vi ここから)----------
     :
ScriptAlias /cgi-bin "/home/www/vhosts/system-act.com/www/cgi-bin"
<Directory       "/home/www/vhosts/system-act.com/www/cgi-bin">
  Options         FollowSymLinks
</Directory>
     :
----------(vi ここまで)----------

$ # 5.2.17のCGI版へのシンボリックリンクを作成します
$ sudo ln -s /usr/local/lib/php-5.2.17/bin/php-cgi /home/www/vhosts/system-act.com/www/cgi-bin/php-5.2.17

.htaccess を使用して、当該ディレクトリ(下位ディレクトリを含む)の*.phpファイルは、PHP 5.2.17で動作するようにします。
※実際は、HTTPサーバー Apache のDirectory定義で設定することをお勧めします。
$ sudo vi /home/www/vhosts/system-act.com/www/weblog/.htaccess
----------(vi ここから)----------Action     php-5-2-17 /cgi-bin/php-5.2.17
AddHandler php-5-2-17 .php----------(vi ここまで)----------

HTTPサーバー Apache を再起動します。
$ sudo service httpd restart

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT Weblog 内記事 : 汎用スクリプト言語 PHP

トラックバックまたはコメントにてお寄せください。

Twitter では .@systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
a System House to build an Accounting system by the Computer Technology