FreeBSD PHPインストール

既にインストールされているPHPに対して、
まず、portで探す。
例えば、GDを追加したかったら、

$locate gd

でも、こうすると、わさわさと結果が出てくるので、portとかphpとかすると、見やすいかもしれない。

$locate gd | grep port | grep php

すると、これまでずらずら出てくるが、

/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/imagewbmp.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/jpeg2png.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/jpeg2wbmp_error1.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/jpeg2wbmp_error2.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/jpeg2wbmp_error3.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/jpg2gd.phpt
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/tests/libgd00086.phpt

こういう感じの項目があるので、 graphics/php5-gdと狙いを定める。

$cd /usr/port/graphics/php5-gd

もしかすると、すでにインストールされているかもしれないので、一応念のために、makeのoptionsをクリアする。

$make rmconfig

インストールする。

$make config-recursive
$make install clean

既に、インストールしてしまっている場合は、ここでエラーが出るが、
よく読めばreinstallしろと言われているので、

make reinstall

これで、最終的にインストールに成功し、 gd.soファイルが生成される。

gd.soファイルがどこにあるのかわからないので、

$locate gd.so

とでもすると、結果が出力される。
locateの前に、updatedbしておかないと、発見できないかもしれない。
私の場合は、updatedb.shをルートディレクトリに作っている。

#!/bin/sh
echo /usr/libexec/locate.updatedb |su -fm nobody

こんな感じ。初めて作る場合は、chmod 755するのを忘れないこと。

/usr/local/lib/libgd.so
/usr/local/lib/libgd.so.5
/usr/local/lib/php/20100525/gd.so
/usr/local/lib/php/20100525-zts/gd.so
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/.libs/gd.so
/usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/modules/gd.so

gd.soファイルがいることがわかったので、

cp /usr/ports/graphics/php5-gd/work/php-5.4.17/ext/gd/modules/gd.so /usr/local/lib/php/20100525

とすると、コピーされる。
コピー先である、/usr/local/lib/php/20100525の場所は、php.iniの中にある、[extension_dir]で定義している場所である。

最後に、extensions.ini に追加されていることを確認し[make reinstall 時に追加したと書かれる。]、apache 再起動

※ただし、同じことを2回以上繰り返しても、ひたすらextensions.iniに追記していくことにより、CUIphpを起動すると、
warningが表示されてしまう。

extension=zip.so
extension=zlib.so
extension=curl.so
extension=dom.so
extension=dom.so  ←こんな感じで同じのが2個ある。

この場合は、削除してやればよい。