[PHP-users 33830] .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

View: New views
16 Messages — Rating Filter:   Alert me  

[PHP-users 33830] .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by kurt-42 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


はじめまして。初めて投稿させていただきます、kurtと申します。
よろしくお願いいたします。


■サーバ環境
CentOS 5.2
apache 2.2.3(yumでインストール)

phpはyumでインストールした場合、--enable-zend-multibyteが有効になってい
ないため、

ftp://ftp.iij.ad.jp/pub/linux/centos/5.2/os/SRPMS/php-5.1.6-20.el5.src.rpm
をDLし、
rpm -ivh php-5.1.6-20.el5.src.rpm
を実行したあと、/usr/src/redhat/SPECS/ 以下に設置されるspecファイル
(php.spec)のconfigureオプション部分に--enable-zend-multibyteを追加して、
rebuild、インストールを行ったもので動かしています


■phpinfoのmbstringまわりの表示項目(関係ありそうな部分だけ抜粋)

Directive                      |Local value|Gloval value
-------------------------------+-----------+--------------
mbstring.detect_order          |auto       |auto
mbstring.encoding_translation  |On         |On
mbstring.func_overload         |0          |0
mbstring.http_input            |auto       |auto
mbstring.http_output           |pass       |pass
mbstring.internal_encoding     |UTF-8      |UTF-8
mbstring.language              |Japanese   |Japanese
mbstring.script_encoding       |no value   |no value
mbstring.strict_detection      |Off        |Off
mbstring.substitute_character  |no value   |no value


■発生している現象
今回発生している現象は、なぜか.htaccessに設定したphpのmbstring関係の設定
がディレクトリツリー的にまったく別のディレクトリのphpにも影響してしまう
という現象です。
本来なら.htaccessの設定は設置したディレクトリ以下にのみしか設定は反映さ
れないものだと思うのですが、こういう挙動はphp特有の仕様なのか(それとも
発見されていないbug・・?、既知のbug? googleで調べたがhitしなかった)、
情報があれば教えてほしいと思います。以下は再現方法の説明です。


とあるディレクトリ(dir1とします)以下に.htaccessを設置し、php用の設定

php_value mbstring.script_encoding EUC-JP

を記述し、適当なphpファイル(dir1/test.phpとします)を設置します。

※dir1/test.php(いたって単純なPHPです。EUC-JPで記述)
-------------------------------------
<?php
print "あいうえお\n";
?>
-------------------------------------

次にディレクトリツリー的にもまったく別のディレクトリ(dir2とします)に以
下に同じPHP(dir2/test.phpとします)を設置します。ただしdir2/test.phpの文
字コードはUTF-8にしておきます。

※階層を簡単に説明するとこのような感じにしておきます
.
├─dir1
│      .htaccess(mbstring.script_encodingを設定)
│      test.php(EUC-JPで記述)

└─dir2
        test.php(UTF-8で記述)


ブラウザからdir1/test.phpをアクセスすると「あいうえお」とEUC-JPで表示さ
れます。
次にdir2/test.phpにアクセスすると本来なら「あいうえお」とUTF-8で表示され
るはずですが、dir1/.htaccessのmbstring.script_encodingの設定が反映されて
いるような挙動をするため文字化けてしまいます。dir2/test.phpのソースの文
字コードはUTF-8なのですが、mbstring.script_encodingの設定が効いてしまっ
ているため、EUC-JPとして動作しているように思えます。
apacheを再起動し、dir2/test.phpにアクセスするとおかしな動作は解消されま
す。ただしdir1/test.phpにアクセスし、dir2/test.phpにアクセスするとやはり
同じ現象が発生します。

※dir2/test.phpに1回アクセスしても、文字化けしない場合があるが、何回かリ
ロードすると文字化けする。これはおそらくapacheの子プロセスの数に影響して
くるのではないかと思われる。

さらにmbstring.substitute_characterを.htaccessに設定した場合も同じように
ディレクトリをまたいで反映されてしまいました。
例によってdir1/.htaccessにmbstring.substitute_characterの設定を行います

php_value mbstring.substitute_character 12307

次にdir1/test.phpを以下のように作成
※dir1/test.php(いたって単純なPHPです。EUC-JPで記述)
-------------------------------------
<?php
$str = "[はしご高]";
print mb_convert_encoding($str, "UTF-8", "EUC-JP");
?>
-------------------------------------

dir2にも同じスクリプトを設置します(dir2以下には.htaccessはなし)
これをブラウザからdir1/test.phpにアクセスすると、はしご高で文字コード変
換はうまくいかず、かわりにmbstring.substitute_characterで指定した文字が
出力されます。dir1の.htaccessの設定だと「〓」が表示されます。
いっぽうdir2/test.phpはmbstring.substitute_characterの設定はされていない
ので、「?」が出力されるはずですが「〓」が表示されてしまいます。

※今回もdir2/test.phpに1回アクセスしても、「?」が表示される場合があるが、
何回かリロードすると「〓」が表示される


どうもphpinfoで表示されるmbstring関係の設定項目の値が「no value」で、さ
らに.htaccess, ini_set関数(ここでの説明は省いていますが同じことが発生し
ました)で上書き設定できる項目でこのような現象が発生するみたいです。
いろいろと動作を試してみた結果、おそらくリクエスト時にno valueになってい
る項目に対しては.htaccessの設定がそのままphpの設定のデフォルト値として扱
われてしまっている気がします。

apacheの子プロセスがphpinfoでno valueになっている項目が.htaccessに上書き
設定されている場合、.htaccessが設定されている領域にアクセスがあると、
その設定を覚えてしまっている?
そのためapache restartすると一旦クリアされて、正しい挙動になるのではと考
えています(PHPは正直あまり詳しくないので推測です)

mbstring.http_inputは.htaccessで設定を変えても、ディレクトリをまたいでは
反映されませんでした。おそらく設定値が「no value」ではないからだと思いま
す。
また、mbstring関係以外で「no value」になっている項目で試してみたのですが
やはりディレクトリをまたいでは設定は反映されません
(mysql.default_passwordで試した)


かなり長文になってしまいましたが、もし何か知っている人がいれば、情報を提
供してほしいと思います。

※個人的にはbugだと思っているのですが・・

http://ml.php.gr.jp/pipermail/php-dev/2008-February/001391.html

mbstring関係でこういう情報もありますし(1の項目)。今回とは直接関係はな
さそうですが

--
kurt <emperor.kurt@...>

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33831] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by Masaki Hojo-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

北條(itam)です.こんにちは. % 2008/07/16 01:09:47 JST

kurt <emperor.kurt@...> さん wrote
in "[PHP-users 33830] .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について":

>> どうもphpinfoで表示されるmbstring関係の設定項目の値が「no value」で、さ
>> らに.htaccess, ini_set関数(ここでの説明は省いていますが同じことが発生し
>> ました)で上書き設定できる項目でこのような現象が発生するみたいです。
>> いろいろと動作を試してみた結果、おそらくリクエスト時にno valueになってい
>> る項目に対しては.htaccessの設定がそのままphpの設定のデフォルト値として扱
>> われてしまっている気がします。

 普通にブラウザの仕様に見えるのですが,HTTPヘッダではContent-Typeフィー
ルドの値(のオプション指定)はどのように出力されているのでしょうか?
 Content-Typeのcharset指定なしなので,最初に最適に表示できたものを同じ
ドメインでは採用しているというブラウザの親切機能のように思えますが,いか
がでしょうか.

 過去ログで,mbstring関係の内部変数の(再度の)初期化が行われていないバグ
があったという話があったような気はかすかにしますが.
--
北條 正樹 itam@... http://itam.jp
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33832] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by yum-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


文字化けですが、PHPからの出力が化けているのか、
ブラウザの表示が化けているのか、切り分けはできていますか?

「文字化けする」とだけ言われても分かりません...。

1. ブラウザで文字のエンコードをいろいろ変えてみて、やはり化けるのか?
2. パケットキャプチャしたデータを文字コード自動認識ツールにかけてもダメなのか?
3. IE、Firefox、Safari、Operaいずれでも化けるのか?


たぶん、
header("Content-type: text/plain; charset=Shift_JIS");
とかやってみたらシアワセになれると思うんだけどね。

あと、FTP転送するときに文字コード変換しちゃってた、ってオマヌはないですよね?


--
ゆむ

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33835] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by TANAKA Masayuki :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

こんにちは田中です

> ※dir1/test.php(いたって単純なPHPです。EUC-JPで記述)
> -------------------------------------
> <?php
> print "あいうえお\n";
> ?>
> -------------------------------------

ここがおかしいです
一番単純なテスト用のコードは phpinfo(); になるはずです。

> ├─dir1
> │      .htaccess(mbstring.script_encodingを設定)
> │      test.php(EUC-JPで記述)
> │
> └─dir2
>        test.php(UTF-8で記述)

1、.htaccess が無い状態で dir1/test.php を実行
2、.htaccess が有る状態で dir1/test.php を実行
3、.htaccess が有る状態で dir2/test.php を実行

1と2の状態を比べて .htaccess の設定が反映されているか確認
1と3の状態を比べて同じであることを確認

他の人も書いていますがおそらく .htaccess の問題ではないと思いますよ。

たなか
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33836] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by 睦月 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

睦月と申します。


> rpm -ivh php-5.1.6-20.el5.src.rpm
> を実行したあと、/usr/src/redhat/SPECS/ 以下に設置されるspecファイル
> (php.spec)のconfigureオプション部分に--enable-zend-multibyteを追加して、
> rebuild、インストールを行ったもので動かしています

蛇足となりますが、CentOS などの RedHat 系ディストリビューションでは、PHP
の各モジュールは別の RPM に分かれています。

yum install php-mbstring

などすればリビルドせずとも mbstring は使用できます。

.htaccess については田中さんが指摘されているように、まず初めにphpinfo();
で実際に.htaccessによる影響が発生しているか確認してみることをお勧めしま
す。


--
睦月 <mutsuki@...>

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33837] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by 睦月 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

睦月です。

> > rpm -ivh php-5.1.6-20.el5.src.rpm
> > を実行したあと、/usr/src/redhat/SPECS/ 以下に設置されるspecファイル
> > (php.spec)のconfigureオプション部分に--enable-zend-multibyteを追加して、
> > rebuild、インストールを行ったもので動かしています
> 蛇足となりますが、CentOS などの RedHat 系ディストリビューションでは、PHP
> の各モジュールは別の RPM に分かれています。
>
> yum install php-mbstring
>
> などすればリビルドせずとも mbstring は使用できます。

すみません、--enable-mbstring と --enable-zend-multibyte を読み間違えて
ました。
--enable-zend-multibyte を有効にするためには確かにリビルド必要ですね。

大変失礼しました。


--
睦月 <mutsuki@...>

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33838] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by Yutaka Doumae :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

堂前です

睦月 さん wrote:

> .htaccess については田中さんが指摘されているように、まず初めにphpinfo();
> で実際に.htaccessによる影響が発生しているか確認してみることをお勧めしま
> す。

そもそも以下の設定は確認されているのでしょうか?
http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html

AllowOverride ちゃんと設定していますか?
#デフォは none じゃ無かったかな?

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33840] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by kurt-42 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


kurtです。

みなさま、いろいろとご意見いただきありがとうございます。

北條さんへの返答
>  普通にブラウザの仕様に見えるのですが,HTTPヘッダではContent-Typeフィー
> ルドの値(のオプション指定)はどのように出力されているのでしょうか?
>  Content-Typeのcharset指定なしなので,最初に最適に表示できたものを同じ
> ドメインでは採用しているというブラウザの親切機能のように思えますが,いか
> がでしょうか.
(ゆむさんへの返答にも書いていますが)header関数で
Content-type: text/plain
を指定し、charsetも指定しています。


堂前さんへの返答
> そもそも以下の設定は確認されているのでしょうか?
> http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html
>
> AllowOverride ちゃんと設定していますか?
> #デフォは none じゃ無かったかな?
に関しては、AllowOverride Allに設定しています。
phpinfoでも確認しましたが、.htaccess設定あり/なしでphpinfoの
mbstring.script_encoding(もうひとつ試しで行った
mbstring.substitute_characterも)のLocal Valueの値が変わることは確認して
います。
そもそもAllowOverrideがNoneなら今回の現象は発生しないと思います。
※apacheの設定にも絡んでくることなので、このあたりは一番初めの段階で開示
しておくべきだったと思っています。申し訳ないです。


ゆむさんへの返答
> 1. ブラウザで文字のエンコードをいろいろ変えてみて、やはり化けるのか?
> 2. パケットキャプチャしたデータを文字コード自動認識ツールにかけてもダメなのか?
> 3. IE、Firefox、Safari、Operaいずれでも化けるのか?
>
>
> たぶん、
> header("Content-type: text/plain; charset=Shift_JIS");
> とかやってみたらシアワセになれると思うんだけどね。
header("Content-type: text/plain; charset=出力する文字コード");
をつけても同じです。
ブラウザも

IE(6.0.2900.2180.xpsp_sp2_gdr.070227-2254)
FireFox(3.0)
Opera(9.51)

で試していますが、ブラウザ問わず同じようにdir2/test.phpは文字化けします
(2のパケットキャプチャまではまだ試してませんが)
apacheを再起動すると解消することからクライアント側に原因があるわけではな
いと思っています。

> あと、FTP転送するときに文字コード変換しちゃってた、ってオマヌはないですよね?
ありません。


よろしくお願いいたします。

On Wed, 16 Jul 2008 11:30:38 +0900
Yutaka Doumae <doumae@...> wrote:

> 堂前です
>
> 睦月 さん wrote:
>
> > .htaccess については田中さんが指摘されているように、まず初めにphpinfo();
> > で実際に.htaccessによる影響が発生しているか確認してみることをお勧めしま
> > す。
>
> そもそも以下の設定は確認されているのでしょうか?
> http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html
>
> AllowOverride ちゃんと設定していますか?
> #デフォは none じゃ無かったかな?
>
> _______________________________________________
> PHP-users mailing list  PHP-users@...
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3

--
kurt <emperor.kurt@...>

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33841] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by Yutaka Doumae :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

堂前です

またまた外してる気がするのですが

AddDefaultCharset off なのでしょうか?
http://httpd.apache.org/docs/2.2/ja/mod/core.html

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33842] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by Masaki Hojo-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

北條(itam)です.こんにちは. % 2008/07/16 13:15:08 JST

From: kurt <emperor.kurt@...>
Subject: [PHP-users 33840] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について
Date: Wed, 16 Jul 2008 12:56:23 +0900

> (ゆむさんへの返答にも書いていますが)header関数で
> Content-type: text/plain
> を指定し、charsetも指定しています。

> (2のパケットキャプチャまではまだ試してませんが)

 上述の出力を確認していただきたいというのは,ゆむさんの書かれている通り
ブラウザ側で受け取っているデータをキャプチャして確認していただきたいとい
う意味でした.私の言葉が適切ではありませんでした.申し訳ありません.

 header関数で指定したかどうかに関わらず,出力の方を確認していただきたかっ
たですが,正常に出力されていると仮定して話しますね.


 PHP-devの#1392の件かもしれませんね.
 PHPのバージョンが5.1.6なので,PHP-devの#1392の件はありうるのですが,
mb_http_outputがpassなので今回の件は関係ないような気もします.
See also> http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_mbstring.html#mbstring_bug07

 ただ,mbstringの内部変数がautoの場合には,リクエストごとに初期化されて
いないケースがあったバージョンである可能性はあるので,autoを一旦別の文字
列(autoと同じ意味であるASCII,JIS,UTF-8,EUC-JP,SJISとか)にして頂いたら,
望むとおりの挙動になるとすれば,やはりmbstringの過去のバグということなの
だろうと思います.

 autoで指定したいということであれば,fedora用にRemi女史が作成された
5.2.6のrpmがあったような気がするので,そちらで動作確認をされてみてはいか
がでしょうか?
See also> http://blog.famillecollet.com/post/2008/05/07/php-526-1
--
北條 正樹 itam@... http://itam.jp

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33843] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by 佐藤-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

さとう@kです。

--- ざっくりカット ---

> > たぶん、
> > header("Content-type: text/plain; charset=Shift_JIS");
> > とかやってみたらシアワセになれると思うんだけどね。
> header("Content-type: text/plain; charset=出力する文字コード");
> をつけても同じです。
> ブラウザも
>
> IE(6.0.2900.2180.xpsp_sp2_gdr.070227-2254)
> FireFox(3.0)
> Opera(9.51)
>
> で試していますが、ブラウザ問わず同じようにdir2/test.phpは文字化けします
> (2のパケットキャプチャまではまだ試してませんが)
> apacheを再起動すると解消することからクライアント側に原因があるわけではな
> いと思っています。
--- ざっくりカット ---


ブラウザ云々を考えるのは、問題点の絞込みに・・・・
telnetコマンドでレスポンスを確認してはいかがでしょうか?


以上

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33845] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by van-15 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

php.iniで「auto」と設定した場合に初期化されない件は 5.2.6
で解消されているようですが、php.iniで設定されていない(no value)場合はまだ対応されていないみたいですね。

--
van <vanxx2@...>
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33856] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by kurt-42 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


kurtです。

みなさん、返事がおそくなり申し訳ございません。
追加情報をいろいろといただきありがとうございます。

取り急ぎ北條さんの

> autoで指定したいということであれば,fedora用にRemi女史が作成された
5.2.6のrpmがあったような気がするので,そちらで動作確認をされてみてはいか
がでしょうか?
>
See also> http://blog.famillecollet.com/post/2008/05/07/php-526-1

を試してみました。Remi女史(初めて知りました)のrpm

php-common-5.2.6-1.el5.remi.i386.rpm
php-5.2.6-1.el5.remi.i386.rpm
php-mbstring-5.2.6-1.el5.remi.i386.rpm
php-cli-5.2.6-1.el5.remi.i386.rpm

↑をインストールしました。phpinfoのmbstring関係の設定も前回と同じにして
います。
(ただし--enable-zend-multibyteはconfigureで指定されていないため、
mbstring.scrpit_encodingは表示されてない)

--enable-zend-multibyteはconfigureで指定されていないため、
mbstring.scrpit_encodingは使えないので、同じくno valueになっている
mbstring.substitute_characterで同じようなことを試してみました。

dir1/test.php(ソースはUTF-8で記述。文字コードをEUC-JPにして出力)
-------------------------------------------------------------
<?php
header("Content-type: text/plain; charset=EUC-JP");
$str = "[はしご高]橋"; # 意図的に文字コード変換で失敗する文字をいれる
print mb_convert_encoding($str, "EUC-JP", "UTF-8");
?>
-------------------------------------------------------------

を作成し、dir1/.htaccessに

php_value mbstring.substitute_character 12307

を設定します。次にdir2/test.phpをdir1/test.phpと同じ内容で設置します。
(もちろんdir2/ 以下には.htaccessはなし)

ブラウザからdir1/test.phpにアクセス時は「〓橋」とeucで表示されます
(.htaccessでmbstring.substitute_characterで文字コード変換で失敗時の挙動
を変えているため)

次にdir2/test.phpにアクセスすると「?橋」と表示されるはずなのですが
(mbstring.substitute_characterの挙動はかえていないため)何回かアクセス
すると「〓橋」と表示されます。
と5.2.6でもやはりリクエストごとに初期化されていないような動きです。

※例によって、一回アクセスしただけでは、発生するとも限らないので、
何回か更新すると発生します。apacheの子プロセスの数を1個しか立ち上がら
ないようにする(StartServers, MinSpareServers, MaxSpareServers,
MaxClientあたりをとりあえず調整)と、かならず発生することから、
発生しない場合はまだ.htaccessの影響を受けていない子プロセス(.htaccessの
ある領域のPHPにリクエストが来たときに、そのリクエストをうけなかった子プ
ロセスとでもいいんですかねえ・・説明がちょっと難しいのですが)にあたった
ときだと思います。
こちらの環境ではデフォルトのapacheの設定だと8個子プロセスが立ち上がっていますが、
何回もdir1/test.phpにアクセスしてから、dir2/test.phpにアクセスすると
.htaccessの影響をうける頻度があがります。(そのうち絶対に発生するように
なる)

> php.iniで「auto」
> と設定した場合に初期化されない件は 5.2.6
>で解消されているようですが、php.iniで設定されていない(no value)場合はまだ対応されていないみたいですね。

結論からいうとまだ対応はされていないということですかね・・・

とりあえず他のみなさんからの意見もいろいろ試してみます


On Wed, 16 Jul 2008 14:15:14 +0900
van <vanxx2@...> wrote:

> php.iniで「auto」と設定した場合に初期化されない件は 5.2.6
> で解消されているようですが、php.iniで設定されていない(no value)場合はまだ対応されていないみたいですね。
>
> --
> van <vanxx2@...>
> _______________________________________________
> PHP-users mailing list  PHP-users@...
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3

--
kurt <emperor.kurt@...>

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33857] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by goungoun :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

こんにちは。

疑問に思ったことだけ書きます。
十分読んでないので、見当違いのことを書いていたら
ご容赦ください。

1.--enable-zend-multibyte と 今回の現象は
  切り分けできてるのか?
  なにはともあれ、php も yum のパッケージを利用してみて、
  同じ問題が発生するか検証してみるのも何か手がかりが得られるかも?

  # yumパッケージをそのまま使ってる人のが多いような?
  # 利用者が多い環境の方がフィードバックもより正確なものが
  # 得られる可能性が高いですし。

2.現象の説明に使われているのは、
  EUC-JPとUTF-8だけですが、その2つだけなら
  --enable-zend-multibyte がなくても問題ないと思います。

  # *PHPスクリプト自身をS-JISで書きたいとき*、S-JISがある意味特殊
  # な文字コードなので--enable-zend-multibyteでコンパイルした
  # ものが必要だったかと)

  # mbstring.script_encoding の設定が不要ということです。
  # ついでに書くなら、PHPスクリプトをUTF-8で書いて、
  # mb_convert_encodingでS-JISにしてechoとかで出力すれば、
  # 同様に、mbstring.script_encoding の設定は不要です。

その他では、
[PHP-users 33856] とか読むと、別件ですが昨日の[PHP-users 33850]
worker、prefork とか気になりますね。

--
goungoun <gounx2@...>
http://goungoun.dip.jp/app/

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33863] Re: .htaccessのmbstring系の設定がディレクトリをまたいで他のphpに反映されてしまう現象について

by kurt-42 :: Rate this Message:

Reply to Author