PHPをソースからインストールしてApacheで使う設定

( ´∀`) まぁ最近はパッケージで簡単に入っちゃうけど、PHPをソースからコンパイルして入れてApacheで使うことにするか……。
なお、ググるより前に公式マニュアルに全部書いてあるので、素直にここを熟読すること。

まずApacheのmod_soを確認

普通はそのままで大丈夫なハズだが、今入っているApacheがmod_so付きかを-lオプションで確認しておこう。

$ /usr/local/apache2/bin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

はい、大丈夫ですね(mod_so.c)。ちなみにこのApacheもソースから入れた。configureはこんな感じだった。

$ cat config.nice
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/usr/local/apache-2.2.17" \
"--enable-mods-shared=all" \
"--enable-proxy-ajp" \
"--enable-cache" \
"--enable-file-cache" \
"--enable-disk-cache" \
"--enable-mem-cache" \
"--enable-proxy" \
"--enable-ssl" \
"--enable-authn-alias" \
"$@"

なおApacheは、prefork MPM を使うこと。マルチスレッドモードは非推奨なので注意

PHPコンパイル

ソースを拾ってきたら、configure, make, make installする。"--with-apxs2" を付けることに注意しよう。うちの設定はこう。

$ ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--prefix=/usr/local/php \
--disable-cgi \
--enable-mbstring \
--enable-mbregex \
--with-pgsql=/usr/local/pgsql

ちょっと変則的ですが、

  • /usr/local/php/bin/php としてインストールする
  • PostgreSQLを使うのでwith-pgsql (MySQL嫌い)

この後、make installするとhttpd.confへ以下の行が自動的に追加される。目で見て確認しておこう。

LoadModule php5_module modules/libphp5.so

httpd.conf

( ´∀`) 拡張子.phpのファイルをPHPスクリプトとして動作させるための設定を、Apachehttpd.confに書く。FilesMatchディレクティブにSetHandler書いておくか……

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

という記述を追加して、httpdをrestartする。

動作確認

以下のようなindex.phpを作って、Webブラウザから確認して終わり。

<?
phpinfo();
?>

( ´∀`) 確認後は、この表示画面はあまり不特定多数に見られるとよろしくないので、消しておくが吉