CentOS5.5のPHPを最新版にアップグレードする
CentOSが他のディストリビューションに比べて一番ダメダメなところは、RPMのレポジトリに登録されている各種ライブラリのバージョンがとにかく古いことなんだな(´・ω・`)
PHPが5.1.6と古いのでバージョンアップすることにした。
ググルとぁゃしぃutterなんちゃらとかremiなんちゃらとかのレポジトリをrpm importして使え!といっているサイトもありますがぁゃしぃものは信じない主義なので自分でソースからインスコする。
PHPをソースからインスコするときは、libxml2, apache-apxs2, libmysqlclientに依存するのでこれらを先に入れる。
libxml2の開発パッケージをインストール。
# cd /usr/local/src/ (自分でいれたソースコードはここに集める主義)
# yum install libxml2
# yum install libxml2-devel確認。
# whereis libxml2
libxml2: /usr/local/lib/libxml2.a /usr/local/lib/libxml2.la /usr/local/lib/libxml2.so
apxs2を先にインストールしておく。これはhttp-develパッケージに入っている。
# yum install httpd-devel
# whereis apxs
apxs: /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz
(パスを通しておく)
# export PATH=$PATH:/usr/sbin/
libmysqlclientはmysql-develパッケージに入ってる。
事前にRPM版のPHP5.1.6を削除。
PHPのソース最新版をphp.netからダウンロードしてきてインストール。
# tar xvjf php-5.3.6.tar.bz2
# cd php-5.3.6/
# make clean (念のため)
# export LDFLAGS="-L/usr/lib64/mysql" (64bit版の場合)
# ./configure --prefix=/usr --with-apxs2=/usr/sbin/apxs --enable-mbstring --enable-mbregex --with-mysql --with-mysql-sock=/var/lib/mysql/mysql.sock --with-pdo-mysql --enable-zend-multibyte --with-zlib-dir=/usr/lib --with-config-file-path=/etc/
pearとかは特に--disable-pearとかしない限り自動的に入るので大丈夫。
# make
# make install
php.iniをコピー。
# cp php.ini-production /etc/php.ini
# ln -s /etc/php.ini /usr/local/lib/php.ini
ソースからインストールしたphp.iniは以下の3箇所を修正する必要があるので注意。
- display_errors = Off に変更 (デフォルトでOnになっている)
- short_open_tag = On に変更 (あまり推奨されてないけど、<?=$var?>形式が使えないといくつかのオープンソースは正しく動作しないので。)
- date.timezone = Asia/Tokyo を追加。(ないとWarningが出まくる)
あとはお好みで。
インストール結果は次のようにして確認&保存しておくと後で便利。
# php --info > phpinfo.txt
Apache再起動。
# /sbin/service httpd restart