[PHP-dev 1447] Re: mbstring.internel_encoding の値が反映されない場合がある件(2)
KATOH Yasufumi
karma @ jazz.email.ne.jp
2009年 3月 11日 (水) 21:22:47 JST
加藤泰文です.
もう少し調べて見ましたが,知識ナシ故に,進展ありません.(^_^;)
>>> On Mon, 02 Mar 2009 13:29:23 +0900
in message "[PHP-dev 1446] mbstring.internel_encoding の値が反映されない場合がある件(2)"
KATOH Yasufumi-san wrote:
> --- mbstring.c.orig 2009-03-02 13:02:25.000000000 +0900
> +++ mbstring.c 2009-03-02 13:03:03.000000000 +0900
> @@ -745,6 +745,7 @@
> * 2. mbstring.language directive is processed in per-dir or runtime
> * context and 3. call to the handler for mbstring.language is done
> * after mbstring.internal_encoding is handled. */
> + _php_mb_ini_mbstring_internal_encoding_set(new_value, new_value_length TSRMLS_CC);
> return SUCCESS;
> }
> }
さすがに _php_mb_ini_mbstring_internal_encoding_set を使うのは目的外使
用みたいでマズい事が起こるのかもしれませんね.単純に
MBSTRG(internal_encoding) = mbfl_name2no_encoding(new_value);
で良いのかも? (current_internal_encoding も?)
ところで,この部分のコメントがイマイチ良く分かりません.単に英語力がな
いだけかも? (^_^;)
| the corresponding mbstring globals needs to be set according to the
| ini value in the later stage because it never falls back to the
| default value if 1. no value for mbstring.internal_encoding is
| given, 2. mbstring.language directive is processed in per-dir or
| runtime context and 3. call to the handler for mbstring.language is
| done after mbstring.internal_encoding is handled.
1. mbstring.internal_encodings が no value
2. mbstring.language がディレクトリ単位もしくは実行時に設定される
3. mbstring.internal_encoding を処理した後に mbstring.language の処理
が呼ばれる
の全てが当てはまるような場合に,もっと後に値をグローバル変数にセットす
る必要がある,ってことですよね? internal_encodings が設定されてないの
に,3 の「internal_encoding を処理した後」という部分が良く分かりませ
ん.どういう事でしょうか?
# 内部が分かってないのでボケてる可能性大ですが... (^_^;)
まあ,確かに後で PHP_RINIT_FUNCTION でグローバル変数にセットはされます
けど,encoding_translation が有効だと RINIT の前に変換の encoding が決
まってしまいますよね.
-----
と,ここまで調べて,ini_set した場合はどうなるかな,とやると,そもそも
ini_set だと OnUpdate_mbstring_internal_encoding には飛ばないので,グ
ローバル変数が ini_set で設定した値じゃないまま,mbstr_treat_data に行
きますね.この中で zend_ini_string とかしても,ini_set で設定する前の
値なので,更新されるのがもっとあと,ということですかね?
php-dev 1445 で PHP 5.2.6 では起きないと書きましたが,ini_set のケース
は 5.2.6 でも同じでうまく動かないですね.
--
==============================================
(((( 加藤泰文
○-○ karma @ jazz.email.ne.jp
==============================================
(Web Page) http://www.ne.jp/asahi/ka/to/
==============================================
ドキドキ...
PHP-dev メーリングリストの案内