• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mbstring.http_outputとoutput_handlerについて)

mbstring.http_outputとoutput_handlerについて

このQ&Aのポイント
  • PHPで内部はUTF-8、出力はSJISの携帯サイトを作成しています。
  • 設定ファイルでmbstring.http_outputにSJISを設定しても表示が変化せず、output_handlerにmb_output_handlerを設定すると表示されるようになります。
  • mbstring.http_outputは出力用の文字コードを設定する項目であり、output_handlerにmb_output_handlerを設定しないと動作しません。また、mbstring.http_outputがpassの場合、output_handlerは動作しません。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

あまり深く考えたことはないですが… >mbstring.http_outputがpassの場合 以下の条件が満たされた場合に、このハンドラは charset HTTP ヘッダを設定します。 ・header() で Content-Type が 設定されていない場合 ・デフォルトの MIME 型が text/ で始まる ・http_output の設定が pass 以外 とあるので、動作しません。 もうひとつの質問は、クリティカルな記述は見つけれませんでしたが その考えで問題はないのではないかと思います。 ただし、独自のob_startのコールバックを使っている場合や、 http_output の値を参照するような処理があれば挙動は変わります。

参考URL:
http://jp.php.net/manual/ja/function.mb-output-handler.php
ftrgp
質問者

お礼

アドバイスありがとうございます! PHPの設定ファイルは細かい所が本当に難しいなと思います。 今マニュアルをもう一度確認したところ mb_output_handlerの条件の一つに http_outputではなくhttp_inputがpassの場合と書かれてますね。 私も勘違いしてました・・・・

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

あら、input になってますね。 コピペ元は output だったんですが、最新のは input になってますね。 http_input = pass でも問題なく動作するので記載ミスじゃ・・?

ftrgp
質問者

お礼

連絡が遅くなりすいません。 アドバイスを頂いたおかげで 設定ファイルについての知識が深まりました。 本当にありがとうございます!

関連するQ&A