guttally.net

CentOS 6.5 に php 5.6.2 をインストールする (3)

パスの設定

ファイルの移動

 次期バージョンの php をインストールしたときにファイルが上書きされないようにするため,/opt/php-5.6.2 の配下以外へインストールされたファイルを (強引に) /opt/php-5.6.2 配下へ連れ戻します。 ここでは,apache から呼ばれるライブラリである libphp5.so を移動します。

$ sudo mkdir -p /opt/php-5.6.2/lib64/httpd/modules
$ sudo mv /usr/lib64/httpd/modules/libphp6.so /opt/php-5.6.2/lib64/httpd/modules/

 続いて,php.ini を準備します。 php を新規にインストールした場合は,src ディレクトリ内にある php.ini-development または php.ini-production をコピーして使います。 今回は,事前に作成しておいたバックアップを使うことにします。

$ sudo mkdir /opt/php-5.6.2/etc/php.d
$ sudo mv ~/php.ini.backup /opt/php-5.6.2/etc/php.ini
$ sudo rm -f /etc/php.ini
$ sudo mkdir /etc/php

$ sudo mkdir -p /opt/php-5.6.2/etc/httpd/conf.d
$ sudo mv ~/php.conf.backup /opt/php-5.6.2/etc/httpd/conf.d/php.conf
$ sudo rm -f /etc/httpd/conf.d/php.conf

リンクの作成

 続いて,php を実際に使えるようにするためにパスを通していきます。 ここでは,次期バージョンの php をインストールしたときにバージョンの切り替えを簡単に行うため,alternatives を使ってみることにします。

sudo /usr/sbin/update-alternatives \
 --install /usr/local/bin/php               php            /opt/php-5.6.2/bin/php 10 \
 --slave /usr/local/bin/phar                phar           /opt/php-5.6.2/bin/phar \
 --slave /usr/local/bin/phar.phar           phra.phar      /opt/php-5.6.2/bin/phar.phar \
 --slave /usr/local/bin/php-cgi             php-cgi        /opt/php-5.6.2/bin/php-cgi \
 --slave /usr/local/bin/php-config          php-config     /opt/php-5.6.2/bin/php-config \
 --slave /usr/local/bin/phpdbg              phpdbg         /opt/php-5.6.2/bin/phpdbg \
 --slave /usr/local/bin/phpize              phpize         /opt/php-5.6.2/bin/phpize \
 --slave /etc/php/php.ini                   php.ini        /opt/php-5.6.2/etc/php.ini \
 --slave /etc/php/php.d                     php.d          /opt/php-5.6.2/etc/php.d \
 --slave /usr/local/include/php             phpincludes    /opt/php-5.6.2/include/php \
 --slave /usr/local/lib/php                 phplibs        /opt/php-5.6.2/lib/php \
 --slave /usr/local/man/man1/phar.1         phar.1         /opt/php-5.6.2/php/man/man1/phar.1 \
 --slave /usr/local/man/man1/phar.phar.1    phar.phar.1    /opt/php-5.6.2/php/man/man1/phar.phar.1 \
 --slave /usr/local/man/man1/php-cgi.1      php-cgi.1      /opt/php-5.6.2/php/man/man1/php-cgi.1 \
 --slave /usr/local/man/man1/php-config.1   php-config.1   /opt/php-5.6.2/php/man/man1/php-config.1 \
 --slave /usr/local/man/man1/php.1          php.1          /opt/php-5.6.2/php/man/man1/php.1 \
 --slave /usr/local/man/man1/phpdbg.1       phpdbg.1       /opt/php-5.6.2/php/man/man1/phpdbg.1 \
 --slave /usr/local/man/man1/phpize.1       phpize.1       /opt/php-5.6.2/php/man/man1/phpize.1 \
 --slave /usr/lib64/httpd/modules/libphp.so libphp.so      /opt/php-5.6.2/lib64/httpd/modules/libphp5.so \
 --slave /etc/httpd/conf.d/php.conf         httpd_php.conf /opt/php-5.6.2/etc/httpd/conf.d/php.conf

 21 行目では,apache から参照されるモジュールライブラリを設定しています。 このライブラリは,先ほどの手順で移動した libphp5.so を参照するものですが,ここでは 5 を抜いた名称でリンクしました。 こうしておくことで,別バージョンの php をインストールしたときにモジュールライブラリ が上書きされることを防ぎます。

apache 側の設定

 次は apache からモジュールを呼び出すための設定を行います。

 php.conf は alternative で設定した /opt/php-5.6.2 内のファイルへリンクされます。 以下のように設定しました。

$ sudo vi /etc/httpd/conf.d/php.conf
/etc/httpd/conf.d/php.conf
LoadModule php5_module /usr/lib64/httpd/modules/libphp.so

PHPIniDir '/etc/php/'

AddHandler php5-script .php
AddType text/html .php

DirectoryIndex index.php

 httpd.conf に古いモジュールの参照が残っていたので,コメントアウトしました。

$ sudo vi /etc/httpd/httpd.conf
/etc/httpd/conf.d/php.conf
# LoadModule php5_module  /usr/lib64/httpd/modules/libphp5.so
 ↑ この行をコメントアウト

動作確認

 ここまでできたら apache を再起動して動作確認します。

$ /etc/rc.d/init.d/httpd restart
$ vi /var/www/html/phpinfo.php
phpinfo.php
<?php
phpinfo();

 ブラウザで phpinfo.php にアクセスして,表示内容に問題が無ければ ok です。