PHP Advent Calendar 1日目
@shin1x1さんがPHP Advent Calendar 2011を立ち上げてくれたので、今年もやらせて頂きます。
去年は、PHPの関数を睡眠学習できるように音声ファイルに出力しました。
睡眠学習的PHPer生活 (PHP Advent Calendar 2010 13日目)
あれから1年
皆さんは既に80%ぐらいは覚えたでしょうから、今年は先取りしてPHP5.4の関数を追加しますね。
追加された差分はこちら
trait_exists get_declared_traits libxml_set_external_entity_loader class_uses session_status session_register_shutdown hex2bin getimagesizefromstring header_register_callback http_response_code stream_set_chunk_size
差分だけの音声ファイルも用意したので、ぜひ睡眠学習にお役立てください。
前フリ終了
PHPのバージョンアップ方法(コンパイル編)
ここからが本題です。
自分はApacheとPHPをコンパイルして入れています。本番環境でPHPのバージョンを上げる時にどうしているか書きます。
基本的には、下記のようにインストールしています。
./configure -prefix=/usr/local/php5.3.8 --with-apxs2=/usr/local/apache/bin/apxs ...オプションが続く make make install
このようにコンパイルして入れると、make installでApacheのphpモジュール(modules/libphp5.so)が上書きされます。
一時的とはいえ上書きされるとスクリプトが動かないので、今回はこの問題の回避方法を説明します。
まず既存のlibphp5.soをコピーします
$ cd apache/modules/ $ cp libphp5.so libphp5.3.2.so
そしてApacheはコピーした方のlibphpをロードするように書き換えます
$ vi apache/conf/httpd.conf LoadModule php5_module modules/libphp5.3.2.so
Apacheをリロードします。
その後、phpをコンパイルしてインストールするとmodules/libphp5.soが上書きされますが、Apacheはlibphp5.3.2.soをロードしているので影響がありません。
最後に
$ cp libphp5.so libphp5.3.8.so
とやって、Apacheのlibphpの読みこみファイルを、 modules/libphp5.3.8.soに変更してApacheをリロード。
明日は、PHPer王子 @shin1x1さんです!