理工系研究者のための Mac OS X, Windows, Linux メモ
 
このエントリーをはてなブックマークに追加

PHP 5をLinuxにインストールするには

作成日:2010/10/22
更新日:2011/3/26
更新日:2011/4/3
更新日:2011/12/31
  1. コンパイルの前に
  2. コンパイル&インストール
  3. ライブラリパスの設定について

コンパイルの前に

ここではPHP 5を

/usr/local/php
にインストールします。

Apache HTTPサーバがインストールされていれば、HTTPサーバ用のPHPモジュールのインストールを同時に行う事が出来るので、連携して利用するつもりならば、あらかじめHTTPサーバーをインストールしておくと良い。 HTTPサーバーのインストール方法については、Apache HTTPサーバのインストール方法を参考にしてください。

PostgreSQLを操作するためのPHP関数を使うためには、あらかじめPostgreSQLをインストールしておく必要がある。 インストール方法はこちらを参考にしてください。

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

PHPのウェブサイトからソースを取得する。 現時点のバージョンは5.3.6。 ソースの解凍からインストールまでは次の通り。

$ tar zxvf php-5.3.6.tar.gz
$ cd php-5.3.3/
$ ./configure --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-pgsql --with-pdo-pgsql=/usr/local/pgsql \
> --with-gd --enable-mbstring \
> --with-freetype-dir=/usr
configureオプションは一例なので、自分の環境に合わせて書き換える必要がある。--with-pgsqlはPostgreSQLの操作関数が必要な場合、 --with-pdo-pgsqlはPDOによるPostgreSQLデータベースの操作を行う場合に付ける。 --enable-mbstringはPHPでマルチバイトの正規表現関数関数が必要な場合に付ける。

--with-gdは画像処理用のライブラリで、動的に画像を生成するための関数が含まれる。 libjpegやlibpngなどのライブラリが見つからないというエラーが出たときには、次節を見てライブラリの位置を指定するオプションを付ける。

GDライブラリの関数のうちでTrueTypeフォントを使うものがあるが(例えばimagettftext())、これらを利用するためにはFreeType(freetype2とfreetype2-devel)をインストールする必要がある。 あらかじめインストールされていればそのパスを--with-freetype-dirで指定する。例えば、freetype.h/usr/include/freetype2/freetype/freetype.hにあるならば、--with-freetype-dir=/usrとする。

実際にヘッダファイルが存在するのに、configure時に見つからない場合には、configureファイルを開いて--with-xxx-dir=などの設定がどのようになっているのかを確認してみるとよい。

configureがうまく通れば、そしてコンパイルとインストールは次の通り。

$ make
$ su
# make install

--with-apxs2を付けてコンパイルした場合には、Apache HTTPにモジュールがインストールされているはず。

$ ls /usr/local/apache/module
libphp5.so

展開したソースファイルのディレクトリ直下に、PHPの初期設定ファイルphp.iniのサンプルとして、php.ini-developmentphp.ini-productionが準備されている。 前者は開発に適した設定、後者は運用に適した設定になっているとのこと。 php.ini-developmentを利用するなら、

# cp php-5.3.3/php.ini-development /usr/local/php/lib/php.ini
とすればよい。

php.iniにタイムゾーンの設定を行っておく。

date.timezone="Asia/Tokyo"

ライブラリパスの設定について

上に書いたように、PHPをコンパイルするときに画像処理用のライブラリであるGDを加える場合にはオプションに

--with-gd
を加える。 このときに、GDで必要とされるlibjpeg, libpngなどが見つからない事がある。 ライブラリのパスを指定するオプションは--with-libdir--with-jpeg-dir--with-png-dirなど。

PHPのソースコードに含まれるconfigureの中を見てみると、36643行あたりに

for i in $PHP_JPEG_DIR /usr/local /usr; do
  test -f $i/$PHP_LIBDIR/libjpeg.$SHLIB_SUFFIX_NAME ↓(続く)
   ↓ || test -f $i/$PHP_LIBDIR/libjpeg.a && GD_JPEG_DIR=$i && break
done
のような記述があり、
--with-jpeg-dir → $PHP_JPEG_DIR
--with-libdir → $PHP_LIBDIR
のように変換されるので、 64bit版のLinuxの場合はライブラリが/usr/lib64などにインストールされているので、
--with-libdir=lib64
とすればよい。

▼参考サイト or 参考文献