PHPのバージョンを複数管理する(その2)
前回はphp-buildで複数のPHPバージョンをコンパイルし、php-versionでcliで動作するPHPのバージョンを変更するところまでやりました。
今回はApacheが利用するPHPを切り替えてみようと思います。
1.Apache諸設定
とりあえず最低限PHPを動作させる設定にします。
$ vi /usr/local/Cellar/httpd/2.2.22/etc/apache2/httpd.conf #LoadModule追記 LoadModule php5_module libexec/libphp5.so AddType application/x-httpd-php .PHP
2.libphp5.so切替シェル作成
こちらを参考にさせていただきました。
ほっとんどコピペです。てへぺろ☆
$ touch ~/bin/apache-php-version $ chmod +x ~/bin/apache-php-version $ vi apache-php-version
#!/usr/local/bin/zsh PROGRAM_APPNAME=$(basename $0) PROGRAM_VERSION="1.0.0" APACHE_LIBEXEC_DIR="${APACHE_PATH}/libexec" show_help() { echo "${PROGRAM_APPNAME} ${PROGRAM_VERSION}" >&2 echo "" >&2 echo "Usage : ${PROGRAM_APPNAME} <version>" >&2 echo "Example: ${PROGRAM_APPNAME} 5.4.0RC6" >&2 exit 1 } check_php_home() { if [[ ! -d ${PHP_VERSIONS} ]] then echo "Sorry, but ${PROGRAM_APPNAME} requires that \$PHP_VERSIONS is set and points to an existing directory." >&2 exit 1 fi } check_apache_path() { if [[ ! -d ${APACHE_PATH} ]] then echo "Sorry, but ${PROGRAM_APPNAME} requires that \$APACHE_PATH is set and points to an existing directory." >&2 exit 1 fi } set_up_apache_module_path() { apache_module_path=$PHP_VERSIONS/$PHP_VERSION/libphp5.so } check_apache_module_path() { if [[ ! -f ${apache_module_path} ]] then echo "Sorry, apache module not found: $apache_module_path" exit 1 fi } check_apache_libexec_dir() { if [[ ! -d ${APACHE_LIBEXEC_DIR} ]] then echo "Directory not found: $APACHE_LIBEXEC_DIR" exit 1 fi } replace_apache_module() { echo "Copy $apache_module_path to $APACHE_LIBEXEC_DIR/libphp5.so" cp $apache_module_path $APACHE_LIBEXEC_DIR/libphp5.so } restart_apache() { echo "Restarting apache..." sudo apachectl restart } [ $# != 1 ] && show_help PHP_VERSION=$1 check_php_home check_apache_path set_up_apache_module_path check_apache_module_path check_apache_libexec_dir replace_apache_module restart_apache
$APACHE_PATHが実はまだ設定されていません。
.zshrcにパスを追加します。aliasも
export APACHE_PATH=/usr/local/Cellar/httpd/2.2.22 alias apache-php-version='zsh ~/bin/apache-php-version'
3.動作確認
DocumentRootにphpinfo()を呼び出すphpを放ってコマンドを実行してみる
$ apache-php-version 5.4.5 Copy /Users/sasakiyasuyuki/.phpenv/versions/5.4.5/libphp5.so to /usr/local/Cellar/httpd/2.2.22/libexec/libphp5.so Restarting apache... Password:
http://localhost/phpinfo.phpでバージョンが5.4.5であるのを確認。
5.3snapshotも
$ apache-php-version 5.3snapshot Copy /Users/sasakiyasuyuki/.phpenv/versions/5.3snapshot/libphp5.so to /usr/local/Cellar/httpd/2.2.22/libexec/libphp5.so Restarting apache...
http://localhost/phpinfo.phpでバージョンが5.3.16-devであるのを確認。
おkですな。