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)
$ 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事前準備)
$ 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「事前準備の事前準備」
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 | 整数の引数とともに使用する パッチをあてるときのパスの修正を行う 修正が必要かどうかはパッチファイルによる |
< | 標準入力の変更 パッチファイルを読み込むようにしている 簡単に言えばお約束 |
$ vi Zend/zend.c
(変更)
┃#if defined(va_copy)
┃ va_copy(usr_copy, args);
┃#else
┃ memcpy(usr_copy, args, sizeof(va_list));
注:ちなみにusr_copy = args;を修正
(ここまで)
$ ./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-dir | jpegファイルを取り扱えるようにする |
--with-png-dir | pngファイルを取り扱えるようにする |
--with-zlib-dir | ファイルの圧縮転送を行えるようにする(?) |
--with-ttf | TrueTypeフォントを扱えるようにする(?) |
--with-freetype-dir | TrueTypeフォントをレンダリングするライブラリを扱えるようにする |
--without-mysql --without-pgsql | データベースソフトは使わない指定 |
--enable-safe-mode | セキュリティを向上させるための呪文。設定が必要になる また、若干動作が遅くなり、一部関数が使用できなくなる(セキュリティ向上の弊害) ちなみにphp6.x以降は削除される運命の呪文 |
/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「データベースソフトは使わない」
戻るなら押せ!