PHP5.2.5インストール方法 on CentOS5.1

以前のエントリ(PHPインストールメモ on CentOS4.4(ソースから))を参考にして、最新のPHP5をインストールしてみました。

ダウンロード

PHP: Downloads
http://www.php.net/downloads.php
から、PHP5.2.5のソースをダウンロードします。

# cd /usr/local/src
# wget http://jp2.php.net/get/php-5.2.5.tar.gz/from/jp.php.net/mirror

コンパイル準備

gccとlibxml2が必要になるので、予めインストールしておく。

#yum -y install gcc*
#yum -y install libxml2*

解凍

# tar zxvf php-5.2.5.tar.gz 
# cd php-5.2.5

コンパイルとインストール

今回はApache2とMySQLをそれぞれ連携したいので、それぞれインストールしたうえで実行。
with-apxs2 with-mysql オプションはそれぞれの環境に合わせること。

MySQLのインストールは、MySQL 5.0.51をソースからインストールする on CentOS5.1を参照して下さい。
Apacheのインストールについては、Apache2.0.63インストール方法 on CentOS5.1を。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --with-mysql=/usr/local/mysql --enable-pdo --with-pdo-mysql=/usr/local/mysql
#make
#make install

確認

# php -v
PHP 5.2.5 (cli) (built: Mar  3 2008 23:56:05) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

PHPの設定

php.iniを編集。雛型が用意されているのでそれを利用。

# cp -p /usr/local/src/php-5.2.5/php.ini-dist /usr/local/lib/php.ini
php.iniを編集

有効にする、または追加するパラメータ

# vi /usr/loca/lib/php.ini
[PHP]
output_handler = mb_output_handler
default_charset = "UTF-8"

[mbstring]
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.internal_encoding = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none;

apacheとの連携

Apacheのインストールについては、Apache2.0.63インストール方法 on CentOS5.1を。

http.confを修正。
# vi /usr/local/apache2/conf/httpd.conf
phpを有効にする。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Apache 再起動
# /sbin/service httpd restart

おっ。エラーが出ました。

httpd を起動中: Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

ライブラリに対するセキュリティ属性が適切に設定されていないことを意味するそうです。
via: Kazuhiro's Weblog: (メモ) 「cannot restore segment prot after reloc: Permission denied」の対処方法

というわけで、SELinuxをEnforcingから、Disable(無効)にしてしまいました(--;

system-config-securitylevel-tui

PHPの動作確認

Apacheのドキュメントルートにテスト用のファイルを作成する。
# vi /usr/local/apache2/htdocs/phpinfo.php
中身を以下のように記述
<?php 
phpinfo();
?>
ブラウザで確認

http://[ipaddress]/phpinfo.php

PHP Version 5.2.5」という見出しの画面が表示されればOKです。

データベースアクセスを実装するために、PDO(PHP Data Object)をインストール

PDOは、PHP拡張モジュールとして、PECL(The PHP Extension Community Library)から入手する

ダウンロード
# pecl download pdo_mysql
WARNING: channel "pecl.php.net" has updated its protocols, use "channel-update pecl.php.net" to update
downloading PDO_MYSQL-1.0.2.tar ...
Starting to download PDO_MYSQL-1.0.2.tar (Unknown size)
.........done: 70,656 bytes
File /usr/local/src/php-5.2.5/PDO_MYSQL-1.0.2.tar downloaded
解凍とコンパイルとインストール

autoconfが必要になるので入れておく

# yum -y install autoconf

コンパイルとインストール

# tar xvf PDO_MYSQL-1.0.2.tar 
# cd PDO_MYSQL-1.0.2
# phpize
# ./configure --with-pdo-mysql=/usr/local/mysql
# make
# make install
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
ライブラリのコピー
# cp -p /usr/local/lib/php/extensions/no-debug-non-zts-20060613/* /usr/local/lib/php/extensions/.

PDOを有効にするために、php.iniの編集

# vi /usr/local/lib/php.ini
以下の内容でキーを有効にする
include_path = ".:/php/includes:/usr/local/lib/php"
extension_dir = "/usr/local/lib/php/extensions"
Apacheの再起動
# /sbin/service httpd restart

PDO動作確認

PDOを使ったデータベースアクセスのサンプルプログラム。単に接続するだけですが...(w

MySQLのインストールは、MySQL 5.0.51をソースからインストールする on CentOS5.1を参照して下さい。

# vi /usr/local/apache2/htdocs/pdo.php
<?php
try {
   $dbh = new PDO('mysql:host=localhost;dbname=mydatabase','dev','dev00');
   $dbh = null;
   print "OK";
} catch (PDOException $e) {
   print "error! " . $e->getMessage();
   die();
}
?>
ブラウザで結果を確認

http://[ipaddress]/pdo.php

「OK」と表示されれば完了です。