index

2010年 3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
  29 30 31        
2010年 4月
        1 2 3 4
5 6 7 8 9 10 11
  12 13 14 15 16 17 18
  19 20 21 22 23 24 25
26 27 28 29 30    
2010年 5月
 
            1 2
  3 4 5 6 7 8 9
  10 11 12 13 14 15 16
  17 18 19 20 21 22 23
  24 25 26 27 28 29 30
  31            

アレ

this version of PCRE is not compiled with PCRE_UTF8 support   ▽20100428a #プログラミング #PHP

自宅サーバの PHP のお話~.

自宅サーバは FreeBSD で,PHP は ports で入れてたんだけど, つい最近まで ports の lang/php5 は PHP5.2 系列だった.

で,メインの apache に PHP-5.2.x が入ってるのはいいんだけど, 仕事で PHP5.3 を使うことになったので, もうひとつ別のポートで apache を立てて, そっちに野良コンパイルの PHP5.3 を入れて使ってた.

(この間幾星霜)

なんとなく MediaWiki をインストールしてみた. 5.3 の方に入れたら,「PHP-5.3.1 はバグあるので動きませぬ. 5.3.2 を使ってネ!」というメッセージ.

で,ふと見たら lang/php5 は PHP5.3 になっていて, lang/php52 ってのが追加されてた.ワーオ.

せっかくなので,メインを lang/php5 の PHP-5.3.2 にして, 別ポートの方を 5.2 にしよう.そうしよう.ってことで入れ替えた.


で嬉々として MediaWiki のインスコ画面を見たら, なにやら warning が出ていました.

PHP Warning: preg_match(): Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support at ~~

PCRE が UTF8 対応じゃないので正規表現のコンパイルでエラー出てますよっと.ほへー.

PHP は 5.3 から PCRE エクステンションは常時組み込まれるようになっていて, 5.2 時代には php5-pcre って ports があったのだけど, 5.3 になってからその ports はなくなって (php52-pcre ってのはある), つまり PCRE って組み込みなんじゃねーの? デフォルトで UTF8 非対応のコンパイルなの? と思ったが,Makefile を見てみるとー.


.if defined(WITH_BUNDLED_PCRE)
CONFIGURE_ARGS+=--with-pcre-regex=yes
PLIST_SUB+=     PCRE=""
.else
LIB_DEPENDS+=   pcre.0:${PORTSDIR}/devel/pcre
CONFIGURE_ARGS+=--with-pcre-regex=${LOCALBASE}
PLIST_SUB+=     PCRE="@comment "
.endif


だそうで.つまり lang/php5 のコンパイル時に WITH_BUNDLED_PCRE を指定しないと, 内蔵 PCRE は使わず,textproc/pcre の ports のが使われるんじゃないカナ?

ports の PCRE が UTF8 非対応ってこともねーと思うのだけど, 訓練された PHPer はこういう時迷わずバンドルバージョンを使います. かつて gd とかで痛い目に.


というわけで,lang/php5 をもっちり再コンパイルして, MediaWiki も文句言わなくなりました.ヤッフー.

未来の自分への備忘録とはいえ, なんであたしの文章ってこう無駄に長いんだろうね?w

index