[PHP-users 2685] FreeeBSDのportsのGDとPHP4.0.6のmake

Masashi Ohba php-users@php.gr.jp
Sun, 14 Oct 2001 10:17:42 +0900


大場です。

Apacheの入れ替え(1.3.20から1.3.22へ)ついでに
FreeBSD 4.3-stableでmakeして正常に使えてた
PHP4.0.6も入れ替えることにしました。
PHP4.0.6の入れ替え前に、OSはcvsupしたソースから
4.4-stableへバージョンアップをしていますが、
OS入れ替え後も特にApacheの起動時にエラーはでていません。

#phpinfo()使って見ると、コンパイル時点のOSバージョンが
#ずっと表示されるで、せっかくOS入れ替えたのに悲しくて
#なんだけど(^^;)

今まで何回もPHP4のコンパイルをしててmake途中で
こけたりした経験が無かったんですが、今回、gd.cの
コンパイルの所で必ず停止する状態になりました。
で、この間で変えたことといえば、OSの入れ替え以外では
gdをportsを使って入れ替えたこと。

最近のFreeBSDは、ports/packagesでインストールすると
「ソフトのバージョン+portsの管理バージョン」という形式になって
portsの管理バージョンが変わるとpatchが違ったりもするので
gdを入れ替えたことで、何か若干の差異が発生したのかな?と考えてます。
その差異までは追いかけてませんが。


具体的には、PHP4.0.6のmake時に

gd.c: In function `php_if_imagegif':
gd.c:1404: `gdImageGif' undeclared (first use in this function)
gd.c:1404: (Each undeclared identifier is reported only once
gd.c:1404: for each function it appears in.)
*** Error code 1

という以前は発生しなかったエラーメッセージが出ました。
これから推測すると、FreeBSDのportsの管理バージョンが上がって行く途中で
GDのライブラリの中でGIF関係の取り扱いが変わったのかなぁという感じです。
(以前はここで止まる事が無かったので)

結局、PHP4.0.6のソース中のext/gdのgd.cとphp_gd.hに
直接手を入れてimagegif関数に関係しそうな部分を何箇所か
コメントアウトすることで、makeも問題無く通り、
インストール後にApacheも正常に起動するので、
「特許問題もあるし、imagegif使わなきゃこれでもいいか」と
思うのですが、ホントにこんな行き当たりばったりで
いいのでしょうかね?(^^;)

というわけで、FreeBSDユーザが最近のportsを利用してgdのライブラリを
インストールした環境で、ソースからPHP4.0.6をインストールすると、
もしかしたら、私以外にもはまる人が出るかもしれませんというお話でした。

gdの1.8.3と1.8.4でもttfとかfreetypeの扱いが
変わってるみたいな話もあったようで、
FreeBSDのportsとは別に、最近はGDまわりって
結構障害が多い感じ?

--------------------------------------------------
Name  : 大場正志(Masashi Ohba)
E-mail: ohba@netforce.ne.jp
Add   : Fukuoka-city, Japan