soramineの日記: (メモ)PHP4.4.1の文字化けなど
そもそも register_globals=on 前提という状況では何の意味もないのかもしれないのですけれども、 4.3.11 から 4.4.1 へバージョンを上げた際に mb_string_*() あたりがおかしくなったりするみたいのの、一時しのぎの方法のようなものがありましたですから、メモを残しておくですの。
(参考のURL)
http://d.hatena.ne.jp/t_komura/20051105#1131202088
http://nucleus.mochy.com/item/182
(パッチのメモ)
パッチに少し修正を加えるみたいなのがあったのと、パッチをどうも逆に適用しなければならないみたいで方法がよくわからなくて失敗したりしてしまったですから、最初から手を加えたパッチ2つを用意して、次のようにしてみたです。
/usr/local/src/ に php-4.4.1/ があるものとして、パッチ2つは /usr/local/src/ において、次のようにコマンドを入力する。
su -
cd /usr/local/src/php-4.4.1/
make clean
cd /usr/local/src/
patch -p0 < /usr/local/src/php-4.4.1-mbfilter.c.patch
patch -p0 < /usr/local/src/php-4.4.1-mbstring.c.rev.patch
cd /usr/local/src/php-4.4.1/
./configure [--your-select-configure-options]
make
make test
make install
ps -Af
exit
(パッチ2つ)
/usr/local/src/php-4.4.1-mbfilter.c.patch
--------
--- php-4.4.0/ext/mbstring/libmbfl/mbfl/mbfilter.c.orig 2005-04-22 14:03:16.000000000 +0900
+++ php-4.4.1/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 */
--------
/usr/local/src/php-4.4.1-mbstring.c-rev.patch
--------
--- php-4.4.0/ext/mbstring/mbstring.c.orig 2005-09-21 13:19:19.000000000 +0900
+++ php-4.4.1/ext/mbstring/mbstring.c 2005-12-02 18:00:00.000000000 +0900
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.c,v 1.142.2.47.2.1 2005/09/21 13:19:19 iliaa Exp $ */
+/* $Id: mbstring.c,v 1.142.2.47 2005/02/21 08:03:47 moriyoshi Exp $ */
/*
* PHP4 Multibyte String module "mbstring"
@@ -55,7 +55,6 @@
#include "mbstring.h"
#include "ext/standard/php_string.h"
#include "ext/standard/php_mail.h"
-#include "ext/standard/exec.h"
#include "ext/standard/url.h"
#include "main/php_output.h"
#include "ext/standard/info.h"
@@ -3474,7 +3473,6 @@
body_enc; /* body transfar encoding */
mbfl_memory_device device; /* automatic allocateable buffer for additional header */
const mbfl_language *lang;
- char *force_extra_parameters = INI_STR("mail.force_extra_parameters");
int err = 0;
/* initialize */
@@ -3596,21 +3594,12 @@
extra_cmd = Z_STRVAL_PP(argv[4]);
}
- if (force_extra_parameters) {
- extra_cmd = estrdup(force_extra_parameters);
- } else if (extra_cmd) {
- extra_cmd = php_escape_shell_cmd(extra_cmd);
- }
-
if (!err && php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)) {
RETVAL_TRUE;
} else {
RETVAL_FALSE;
}
- if (extra_cmd) {
- efree(extra_cmd);
- }
if (subject_buf) {
efree((void *)subject_buf);
}
--------
動くといいなあ・・・
(メモ)PHP4.4.1の文字化けなど More ログイン