- ベストアンサー
※ 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は動作しません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あまり深く考えたことはないですが… >mbstring.http_outputがpassの場合 以下の条件が満たされた場合に、このハンドラは charset HTTP ヘッダを設定します。 ・header() で Content-Type が 設定されていない場合 ・デフォルトの MIME 型が text/ で始まる ・http_output の設定が pass 以外 とあるので、動作しません。 もうひとつの質問は、クリティカルな記述は見つけれませんでしたが その考えで問題はないのではないかと思います。 ただし、独自のob_startのコールバックを使っている場合や、 http_output の値を参照するような処理があれば挙動は変わります。
その他の回答 (1)
- tany180sx
- ベストアンサー率63% (239/379)
回答No.2
あら、input になってますね。 コピペ元は output だったんですが、最新のは input になってますね。 http_input = pass でも問題なく動作するので記載ミスじゃ・・?
質問者
お礼
連絡が遅くなりすいません。 アドバイスを頂いたおかげで 設定ファイルについての知識が深まりました。 本当にありがとうございます!
お礼
アドバイスありがとうございます! PHPの設定ファイルは細かい所が本当に難しいなと思います。 今マニュアルをもう一度確認したところ mb_output_handlerの条件の一つに http_outputではなくhttp_inputがpassの場合と書かれてますね。 私も勘違いしてました・・・・