php4

なんか、流行ってたらしいね。知らなかったけど。
ウェブメールのsquirrelmailを使うとき必要になるからインストール♪

でも、PHP4.4.0にはバグがあるんですよ・・・(;´Д`)<昔の話だけど
「PHP4.4.0にはバグが」
squirrelmailを1.4.5にバージョンアップしたときに見つかったバグ。
日本語のタイトルをつけたメールを送信すると文字化けするというもの。
例えば、、、
たのしみ? >(と書いたのが)> J}Wみ? となる。
ぷげら。なサイト >(と書いたのが)> wRら。なサイト となる。
という感じ。
最初はsquirrelmail1.4.5のバグだと思って調べまわった結果、PHP4.4.0のバグということが判明。
情報ソース:[SM-USERS-JA:1408] Re: Squirrelmail1.4.5+日本語パッチ環境でのSubjectの文字化け

やること一覧
	・事前に必要になるソフトのインストールPHP でグラフを作る (gd/JpGraph編)パッチ作業・ソースの修正PHP4のインストール

関連ページ
	・apache2



事前に必要になるソフトのインストール

zlibはopensslか参考サイトを参照。
説明はばっさりと割愛。
もきゅ(=ω=)<「メモ帳そのまま」だそうですよ

事前準備の事前準備その1)
JPEG グラフィックスフォーマット用のライブラリ
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

	$ tar xvfz jpegsrc.v6b.tar.gz
	$ cd jpeg-6b
	$ ./configure --prefix=/usr --enable-shared --enable-static
	$ make
	# make install
インストールされるもの
	/usr/bin/*jpeg*
	/usr/bin/*jpgcom
	/usr/include/jconfig.h
	/usr/include/jerror.h
	/usr/include/jmorecfg.h
	/usr/include/jpeglib.h
	/usr/lib/libjpeg.*
	/usr/man/???
おまじない
	# strip -p /usr/bin/*jpeg*
	# strip -p /usr/bin/*jpgcom
事前準備の事前準備その2)
TrueTypeフォントをレンダリングするライブラリ
http://www.freetype.org/
	$ tar xvfz freetype-2.3.4.tar.gz
	$ cd freetype-2.3.4
	$ ./configure --prefix=/usr
	$ make
	# make install
インストールされるもの
	/usr/bin/freetype-config
	/usr/include/freetype2/
	/usr/include/ft2build.h
	/usr/lib/libfreetype.*
	/usr/lib/pkgconfig/freetype2.pc
	/usr/share/aclocal/freetype2.m4
事前準備)
gdのインストール
http://www.libgd.org/Main_Page
	$ tar xvfz gd-2.0.34.tar.gz
	$ cd gd-2.0.34
	$ ./configure --prefix=/usr
		┃** Configuration summary for gd 2.0.34:
		┃
		┃   Support for PNG library:          yes
		┃   Support for JPEG library:         yes
		┃   Support for Freetype 2.x library: yes
		┃   Support for Fontconfig library:   no
		┃   Support for Xpm library:          no
		┃   Support for pthreads:             yes
	$ make
	# make install
インストールされるもの
	/usr/bin/
	 annotate webpng gdlib-config gdtopng gdcmpgif gdparttopng
	 gd2copypal gd2topng gd2togif pngtogd bdftogd giftogd2 pngtogd2
	/usr/include/
	 entities.h entities.h gd_io.h gdfontg.h gdfontmb.h gdfontt.h
	 gd.h gdcache.h gdfontl.h gdfonts.h gdfx.h
	/usr/lib/libgd.*
おまじない
	# cd /usr/bin
	# strip -p annotate webpng gdtopng gdcmpgif gdparttopng gd2copypal \
	gd2topng gd2togif pngtogd giftogd2 pngtogd2
「事前準備の事前準備」
とにかく、玄箱は何も入っていない。
あるものをコンパイルしようと思うと別のものが必要になる。
で、その別のものをコンパイルしようと・・・
と、はまっていくわけですよ。

大抵、3段以上になると別のどこかがおかしいはずですけどね。
まぁ、3段になると必要なソフトの数が多すぎてコンパイルする気力がなくなりますがw

パッチ作業・ソースの修正

php-4.4.7.tar.gzを探してくる。
PHP: Hypertext Preprocessor
で、先ほど作ったパッチとともにユーザーのホームディレクトリにFFFTPで送る。
注:php-4.4.7.tar.gzとパッチファイルは同じ場所にあると仮定している。

パッチをあてる

	$ tar xvfz php-4.4.7.tar.gz
	$ cd php-4.4.7
	$ patch -p1 <../zend.c.obj
		注:下記のパッチファイルを利用する場合に実行
		注:修正用パッチファイル
			php4.x-zend.c_v1.162.2.26.2.5用(zend.c.tar.gz) md5sum crc32:2A220E6B
			php4.x-zend.c_v1.162.2.26.2.3用(zend.c.442.tar.gz) md5sum crc32:8869DCCF
		

option説明など
-p整数の引数とともに使用する
パッチをあてるときのパスの修正を行う
修正が必要かどうかはパッチファイルによる
<標準入力の変更
パッチファイルを読み込むようにしている
簡単に言えばお約束

(上記パッチの内容;パッチ適応時は以下を飛ばす)
ppcでphpをコンパイルするときのお約束修正
	$ vi Zend/zend.c
		(変更)
		┃#if defined(va_copy)
		┃			va_copy(usr_copy, args);
		┃#else
		┃			memcpy(usr_copy, args, sizeof(va_list));
			注:ちなみにusr_copy = args;を修正
(ここまで)
「パッチ作業・ソースの修正」
現在、ほとんどのソフトは修正なしでコンパイルが可能ですが、
実際にはMakefileと呼ばれる組み立て手順書みたいな奴を手動で修正しなきゃいけないソフトもあります。
もちろん今回のように緊急を要する修正の場合は「手動で修正」ということがあります。

まぁ、複雑な修正にviを使うのは非効率的ですから、
解凍したファイルをダウンロードしてWinで修正した後、上書きでUPするのがいいんだろうけどね。

PHP4のインストール

	$ ./configure --prefix=/opt/php \
	--with-apxs2=/opt/apache2/bin/apxs \
	--enable-mbstring --enable-mbstr-enc-trans \
	--with-gd=/usr --enable-gd-native --enable-gd-jis-conv \
	--with-jpeg-dir --with-png-dir --with-zlib-dir \
	--with-ttf --with-freetype-dir \
	--without-mysql --without-pgsql \
	[--enable-safe-mode]
		

option説明など
--with-apxs2=apache2のモジュールとしてコンパイルする指定
apache1だと違うオプションになる
--enable-mbstring
--enable-mbstr-enc-trans
多言語に対応させるオプション
日本語で使うには必須
--with-gd=
--enable-gd-native
--enable-gd-jis-conv
gdというグラフィックを弄るソフト関係のオプション
--with-jpeg-dirjpegファイルを取り扱えるようにする
--with-png-dirpngファイルを取り扱えるようにする
--with-zlib-dirファイルの圧縮転送を行えるようにする(?)
--with-ttfTrueTypeフォントを扱えるようにする(?)
--with-freetype-dirTrueTypeフォントをレンダリングするライブラリを扱えるようにする
--without-mysql
--without-pgsql
データベースソフトは使わない指定
--enable-safe-modeセキュリティを向上させるための呪文。設定が必要になる
また、若干動作が遅くなり、一部関数が使用できなくなる(セキュリティ向上の弊害)
ちなみにphp6.x以降は削除される運命の呪文

$ make $ make test # make install
インストールされるファイル
	/opt/apache2/modules/libphp4.so
	/opt/php/bin/php*
	/opt/php/bin/pear
	/opt/php/etc/pear.conf
	/opt/php/include/php/
	/opt/php/lib/php/
	/opt/php/man/man1/???
その他インストールに伴う変更(httpd.confの書き換え)
	$ cd /opt/apache2/conf
	$ diff httpd.conf httpd.conf.bak
		┃232d231
		┃< LoadModule php4_module        modules/libphp4.so
おまじない
	# strip -p /opt/php/bin/*
phpを登録する
	# vi /opt/apache2/conf/httpd.conf
		(追加)
		┃AddType application/x-httpd-php .php
		┃AddType application/x-httpd-php-source .phps
			注:AddType application がある近くに記載する方がいいと思われ
apacheの再起動
	# /etc/init.d/httpd stop
	# /etc/init.d/httpd start
「データベースソフトは使わない」
今回は小型ソフトとsquirrelmailのための作成ですので、この程度で十分です。
wikiとかblogとか...をやりたい人はデータベースソフトとの連携が必須となると思いますが・・・
私は使わないから(大手の無料のほうが簡単に使えるし)

「PHP」
何が悪いのか詳しくは検証していないんですが、PHP5はインストールできませんでした。
っていうか、xmlとかいう奴が必要なんですがコンパイルできないorz
何でだろうな〜?
まぁ、今のところ問題は...多分、無いから大丈夫(^^A"


戻るなら押せ!