FreeBSDにphp5.2.0インストールしかしCoreDump

自分は随分前からperlな人でいろいろなアプリを作ってきました。他の言語には見向きもしませんでしたがphpが気になりだしている。

最近巷ではphpが流行っているらしくIT系の記事やメーリングリストも読んで見てますが活発な情報交換をしているようです。

最新バージョンをしらべてみるとphp5.2までなっている、自分が始めてphpを知ったのはたしかVer3ぐらいだっただろうか。

つうことでプログラムの開発環境までは揃えてみようと思いMyサーバFreeBSDにインストールしてみることにした。

インストール

FreeBSDにはportsと呼ばれるとても便利なインストール環境がある。 FreeBSD + Apache + MySQL + PHP5 所謂 LAMP じゃなく FAMP (笑)なサーバにしてみようと思う。 apacheとMySQLはすでに利用しているのでphp本体と拡張モジュール群をインストール

# portinstall php5
# portinstall php5-extensions

extensionsのインストールで初めに個別のモジュールを選択してインストールが出来るようになっている。これは大変便利な機能だFreeBSDならではだろう。依存関係も全て自動で面倒みてくれるため楽チンである。思わず簡単なだけに機能てんこ盛りでインストールしてしまった。車で言う所のフル装備ってゆうの?(古)

又今のphpには PHPコード最適化モジュール「Zend Optimizer」があるらしくこれもインストール段階で選択できるようになっている。

インストールされたモジュールたち

#cat /usr/local/etc/php/extensions.ini
extension=session.so
extension=recode.so
extension=calendar.so
extension=ctype.so
extension=curl.so
extension=dba.so
extension=dom.so
extension=fileinfo.so
extension=gd.so
extension=gettext.so
extension=iconv.so
extension=mbstring.so
extension=mcrypt.so
extension=mhash.so
extension=ming.so
extension=mysql.so
extension=ncurses.so
extension=openssl.so
extension=pcntl.so
extension=pcre.so
extension=pdf.so
extension=zlib.so
extension=pdo.so
extension=posix.so
extension=pspell.so
extension=readline.so
extension=simplexml.so
extension=soap.so
extension=sockets.so
extension=sqlite.so
extension=sysvmsg.so
extension=sysvsem.so
extension=sysvshm.so
extension=tokenizer.so
extension=xml.so
extension=xmlreader.so
extension=xmlrpc.so
extension=xmlwriter.so
extension=xsl.so
extension=zip.so

後はphpをapacheモジュールとして動いてもらうためのおまじないを書く。 これはcgiとしてではなくapacheにphpの機能を持たせることとなる。 cgiとして起動させるとリクエストの度にphpをコンパイルしてから実行となりこの部分のオーバヘッドがあるためどうしても遅くなりがちである。 apacheのモジュールとして起動しておけば毎回読み込み・コンパイルの動作がいらなくなり結果高速にリクエストをさばけるようになる訳だ。

httpd.conf

LoadModule php5_module        libexec/apache/libphp5.so
AddModule mod_php5.c
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

でもってapacheをrestartするがどうもコケているようだmessagesに

pid 35583 (httpd), uid 0: exited on signal 6 (core dumped)

こんな表示がある。 途方にくれていてもしかたないのでgoogle先生にお尋ねしてみた。

で、「徒然なるまま」サイトで見つけたがextensions.iniで呼んでいるモジュールの順番がまずいとcoredumpを吐くみたいだった。で早速extensions.iniの内容を全部コメントを付加して上から順にコメントを外しapacheの再起動を繰り返していった所extension=session.so と extension=recode.so の2つが原因だったのを突き止めた。多分読み込む順番が他のモジュールと依存していたりするのだろう。 結局一番上に持ってくる事で全ては解決!!

extensions.ini のファイルはphp5-extensions をインストールした時に自動的に作られたものなので結構他にもハマッテル人がいるんじゃなかろうか?

info.php を以下の用に作って目出度くinfo画面を拝むことが出来ました。

<? phpinfo(); ?>

php52

ps aux でapacheのプロセスを覗いてみると以下のよう

USER      PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root    37798  0.0  3.5 28532 17900  ??  Ss    4:45PM   0:00.94 /usr/local/sbin/httpd -DSSL
www     37799  0.0  3.5 28604 17984  ??  I     4:45PM   0:00.04 /usr/local/sbin/httpd -DSSL
www     37800  0.0  3.5 28604 17984  ??  I     4:45PM   0:00.03 /usr/local/sbin/httpd -DSSL
www     37801  0.0  3.5 28604 17984  ??  I     4:45PM   0:00.03 /usr/local/sbin/httpd -DSSL
www     37802  0.0  3.5 28604 17984  ??  S     4:45PM   0:00.06 /usr/local/sbin/httpd -DSSL
www     37803  0.0  3.5 28532 17900  ??  I     4:45PM   0:00.00 /usr/local/sbin/httpd -DSSL
www     37815  0.0  3.5 28532 17900  ??  I     4:45PM   0:00.00 /usr/local/sbin/httpd -DSSL

あんだけモジュール詰め込んだのにプロセスsizeは増えないのね。 mod_perlのときはGDやらImageMagickやらを詰めるとすぐに十数MBぐらいになったもんだがphpのなせるワザなのかぁ。

created:

Back to top