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

差分だけの音声ファイルも用意したので、ぜひ睡眠学習にお役立てください。
Download


前フリ終了

PHPのバージョンアップ方法(コンパイル編)

ここからが本題です。
自分はApachePHPコンパイルして入れています。本番環境でPHPのバージョンを上げる時にどうしているか書きます。
基本的には、下記のようにインストールしています。

 ./configure -prefix=/usr/local/php5.3.8 --with-apxs2=/usr/local/apache/bin/apxs  ...オプションが続く
 make 
 make install

このようにコンパイルして入れると、make installでApachephpモジュール(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さんです!