« 最近のお気に入り | トップページ | PHP4.3.11のお守り(おもり)#2 »

PHP4.3.11のお守り(おもり)#1

 ここ数日、夜も寝ないで昼寝して、PHP4.3.11をOS X server用にいちからコンパイルする、という作業にはまっていました。
 いつもながら、興味のない人には全く面白くない話しながら、自分に対する備忘とこんなものでも誰かの助けになれば、と思い、覚えている範囲で一通りおさらいしておきます。
 
 私が管理している二つのOS X(10.3.9)serverのPHPは共に4.3.11を使用しています。 理由はこちら
 
 ところがこれにはセキュリティ上の問題があり、上記entropy.chのOS X用バイナリはビルドされた日付から判断する限り、この脆弱製には対応していないと思われます(もしかするとしているかもしれないけど、私が調べた限り...ということで)
 これについてはずっと気になっていたんだけど、上記二つのサーバーはこれまではそれほど多くの人に利用される目的では使われておらず、いつかはなんとかしなくては、程度に捉えていました。
 
 しかし、ここに来て通販サイトなんかの仕事が来るに及び「対策してませんでした」では済まなくなり、夏休みでまとまった時間がとれることもあって挑戦することになったのです。
 
 PHP4.3.11のソースは本家から、パッチファイルはこちらからダウンロードし、ターミナル上でpatchコマンドを使用。 ところがここで早くも問題発生。
 「ld: can't locate file for: -lcrt1.o」(※1)とのメッセージでパッチ作業失敗。
 
 まずMax OS X上でコンパイルをする時には何よりも付属のDeveloper's Kitをインストールすることが大前提となります。 次に重要なのが、走っているOS Xのバージョンに対応したDeveloper's Kitであること。
 私もこれに習い、ソフトウエアアップデートも利用して10.3.9に最適化。
 でもどういうわけか一部のライブラリが/usr/libディレクトリに自動的にコピーされない為に(※1)のメッセージが出ることが判明。
 対策として足らないライブラリを検索(この時"-lcrt1.o"ではなく、"crt1.o"で検索)、し、/usr/libに手動でコピー。
 
 パッチがあたれば次はconfigureですが、その前に、現在動いているPHPのコンフィギュアオプションを例の"phpinfo();"が書かれたファイルで事前にコピーを取っておきます。(その他、php.iniなど、各種バックアップを取っておかないと後で泣きを見ます)
 
 とりあえずentropy.chのコンフィギュアオプションで走らせるも、ここでも「"libjpegというライブラリがない」(※2)というエラーメッセージ。
 これは(※1)とは別物エラーで、PHPに拡張機能を持たせる為に必要なライブラリで、これはこちらからゲット。
 
 ここで、Mac OS Xに詳しい人はあれ?と思われるはずです。
 そうなのです。 これはrpmパッケージですから、Darwin系のOS Xにはそのままでは利用できません。
 ということで、もともとこのパッケージを制作されたOS X Workshopというグループのお力を拝借。
 
 この後もでコンフィギュアオプションの為に「あれがない、これがない」と言われ続け、これらを全てつぶすよりも、entropy.chのオプションから本当自分のサーバーに必要なものだけにしぼることに作戦変更。
 これでも「○○を走らせるには△△のオプションを --withせんとあかんで」と言われたりもしますが、これはなんとか試行錯誤で無事終了。
 
 いよいよmakeの段階になります。
 コンフィギュアであれだけ苦労したんだから、makeまで来たら楽勝だと思っていたら...
 
 長くなったので翌日に続く...

|

« 最近のお気に入り | トップページ | PHP4.3.11のお守り(おもり)#2 »

osCommerce」カテゴリの記事

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108674/11220386

この記事へのトラックバック一覧です: PHP4.3.11のお守り(おもり)#1:

« 最近のお気に入り | トップページ | PHP4.3.11のお守り(おもり)#2 »