某所向けにMacMiniにOSX(Leopard)という構成のサーバを設定していたのだが、phpでgdを使っている部分で、画像がどうしても出ない。フレームワークのログにも何も出てこないので、apacheのログを見てみると、表題のような滅多に見ない落ち方をしたログが残っている。こんな感じ。
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
[Fri Sep 26 03:51:51 2008] [notice] child pid 335 exit signal Trace/BPT trap (5)
[Fri Sep 26 03:51:54 2008] [notice] child pid 136 exit signal Trace/BPT trap (5)
あちこち調べた結果、どうもMacPortsの問題としてちょうど俎板の上に乗っている問題で、gdのimagettftext()関数がApacheを巻き込んで死んでしまうということらしい。解決方法はfreetypeのPortfileを持ってきて、コンパイルオプションを変えて手で突っ込めということらしい。
この時点でかなり嫌気が差すが、あきらめてまずfreetypeのPortfileを開く。Portfileはえらく深い階層(/opt/local/var/macports/sources/ rsync.macports.org/release/ports/print/freetype/Portfile)にあったので見つけるのに苦労したが、これの50行目–with-old-mac-fontsをコメントアウトする。
# --with-old-mac-fonts
そしてfreetypeを強制再インストール。
$ sudo port -nf upgrade freetype
次にphp5をもう一度ビルドし直す。
$ sudo port -nf upgrade php5
これでひとまず問題は解決した。portの中身をsyncするたびに元に戻ってしまうので根治療法にはならないが、Macports側の対応がなされるまでの間の手当としては妥当なところだろう。手数も最小限だ。
参考になれば幸い。
mac, Server | 2 Comments »