PHP4.4.0のmb_encode_mimeheaderのバグでSquirrelmailのsubjectが特定文字で文字化けする
- [PHP-dev 1160] mb_encode_mimeheader() が正常に動作しない件について
- [PHP-dev 1162] Re: mb_encode_mimeheader() が正常に動作しない件について
SRPMをダウンロード→パッチあて→リビルド しよう
PHP4.4のSRPM
SRPMを展開→リビルドの方法
# yum install bzip2-devel curl-devel db4-devel expat-devel freetype-devel gd-devel gdbm-devel gmp-devel libjpeg-devel libpng-devel libxml2-devel ncurses-devel openssl-devel pam-devel pspell-devel apache-devel imap-devel krb5-devel cyrus-sasl-devel openldap-devel mysql-devel postgresql-devel unixODBC-devel ucd-snmp-devel krb5-libs zlib-devel mm-devel flex
これだけパッケージがいるようだ、ていうかflex今まで入ってなかったのか(w
まぁ要領削減の為にdevel系パッケージは全て削除してたので仕方ない・・・
# rpm -ivh php-4.4.0-1.norlug.src.rpm
とすると
/usr/src/redhat/SPECS/にphp.spec
/usr/src/redhat/SPECS/にphp.spec
/usr/src/redhat/SOURCES/にソースファイルのアーカイブやパッチファイルが置かれる
php-4.4.0-mbfilter.patch
--- php-4.4.0/ext/mbstring/libmbfl/mbfl/mbfilter.c.org 2005-04-22 14:03:16.000000000 +0900 +++ php-4.4.0/ext/mbstring/libmbfl/mbfl/mbfilter.c 2005-07-16 13:57:54.789858536 +0900 @@ -1964,9 +1964,9 @@ { static int qp_table[256] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x10 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x20 */ - 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 1, 0, 1, /* 0x10 */ + 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 1, 0, 1, /* 0x30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 */ @@ -1990,7 +1990,7 @@ break; default: /* ASCII */ - if (!qp_table[(c & 0xff)]) { /* ordinary characters */ + if (c >= 0x00 && c < 0x100 && !qp_table[(c & 0xff)]) { /* ordinary characters */ mbfl_memory_device_output(c, &pe->tmpdev); pe->status1 = 1; } else if (pe->status1 == 0 && c == 0x20) { /* repeat SPACE */
上記内容のパッチファイルphp-4.4.0-mbfilter.patchを/usr/src/redhat/SOURCES/へ設置
/usr/src/redhat/SPECS/php.specの
72行目周辺
Patch7: php-libtool.patch # mbsfilter patch Patch8: php-4.4.0-mbfilter.patch
を追加
295行目周辺
#%patch7 -p1 %patch8 -p1
を追加
# rpmbuild -bb php.spec
を実行するとバイナリパッケージが/usr/src/redhat/RPMS/i386/に作られる
# rpm -ivh --replacepkgs --replacefiles php-4.4.0-1.norlug.i386.rpm
等ですでに入っているパッケージとリプレース可能
終わったらいらないファイルとパッケージを削除
# rm -rf /usr/src/redhat/BUILD/php*
# rm -rf /usr/src/redhat/SOURCES/php*
# rm -rf /usr/src/redhat/SPECS/php*
# yum remove bzip2-devel curl-devel db4-devel expat-devel freetype-devel gd-devel gdbm-devel gmp-devel libjpeg-devel libpng-devel libxml2-devel ncurses-devel openssl-devel pam-devel pspell-devel apache-devel imap-devel krb5-devel cyrus-sasl-devel openldap-devel mysql-devel postgresql-devel unixODBC-devel ucd-snmp-devel zlib-devel mm-devel flex