パスワードを忘れた? アカウント作成
450481 journal

soramineの日記: (メモ)PHP4.4.1の文字化けなど

日記 by soramine

 そもそも 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);
     }

--------

 動くといいなあ・・・

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...