phpの設定について質問です。


Windows上にapache php5をインストールしました。今までXREAで正常に動いていたphpスクリプトがおかしくなりました。

「フォームで入力したマルチバイト文字をPOST又はGETで別ページに引き渡して、SQLでDB検索」

おかしくなったのはこれです。
シングルバイトは正常です。

mbstring関係の設定がおかしいのかなと思いphp.iniのmbstring設定をXreaと全く同じにしました。それでもダメです。

何か他に原因が考えられるでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/04/15 11:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:studioes No.1

回答回数523ベストアンサー獲得回数61

ポイント27pt

全く同じなのが問題ではないでしょうか?

項目未設定時の動作は環境により異なります。

このため、明示的にエンコーディングや動作方法などを設定しなければいけないことがあります。

また、Windows環境では制限により同じバージョンのPHPでも利用できない命令が存在しますので確認してください。

また、Apacheの設定は確認しましたか?(例えばエンコード情報のヘッダ出力は、メタタグより優先されます)

id:tokyosmash

回答ありがとうございます。

文字コードの問題にはいつも悩まされます。アジア人って損だな・・と愚痴を言ってもしょうがないので、きちんと知識をつけて解決しようと思います。ただあまりこっちの世界に時間を費やすことができないので、のんびりゆっくりやっていこうと思います。

2007/04/12 06:50:26
id:ctrl-v No.2

回答回数289ベストアンサー獲得回数15

ポイント27pt

MySQL等、データベースの文字コードの設定ではないでしょうか?

http://wota.jp/ac/?date=20061011#p01

id:tokyosmash

MySQL5に変えた途端に文字化けして途方にくれたことがあります。ご指摘の通りMySQLの文字コードが原因のようですね。リンク先をしっかり読んで対処したいと思います。

2007/04/12 06:52:26
id:gekikawa No.3

回答回数110ベストアンサー獲得回数11

ポイント26pt

ずばり解決ではないのですが、もう少し問題の切り分けをしては

いかがでしょうか?


シングルバイトはOKでマルチバイトがNGということから、文字コード

がトラブルの原因と推察されますが、PHP内の問題かDB側との問題かが

不明瞭です。


まずはDBに送っているSQLクエリをテスト的に画面出力させて、文字化けが

あるかないか調べては如何でしょうか?

もしあれば、PHP側の文字コードの問題でしょうし、なければPHPの出力文字コードと

DB側の文字コードがミスマッチしているのだと思います。


あと蛇足ですがphpinfo()を使って各サーバーの文字コードの設定

などもう一度ご確認されてはいかがでしょうか?

id:tokyosmash

ご指摘ありがとうございます。

確かに安易に質問してしまいました。

こういう風に漠然とした質問が一番タチが悪いですよね。

「サーバーがおかしくなった!何で!?」と聞いている質問を見ると「その聞き方じゃ誰も答えられないよ・・」と思います。まさにこの質問ですね。反省します。

と話が脱線しましたが、とりあえずPHPとDBのどちらの設定がおかしいのか明確にしてみます。他の方からご指摘頂いているようにDBがおかしいんだと思います。

いいかげんローカルできちんと環境を整えたいのでのんびり原因を探っていきます。回答ありがとうございました。

2007/04/12 06:47:57
  • id:tokyosmash
    [mbstring]
    mbstring.language = Japanese
    mbstring.internal_encoding = UTF-8
    mbstring.http_input = auto
    mbstring.http_output = pass
    mbstring.encoding_translation = Off
    mbstring.detect_order = auto
    mbstring.substitute_character = no value;
    mbstring.func_overload = 0

    質問文では字数制限があるのでここで補足させてもらいます。
    以上のように設定しました。
  • id:b-wind
    >DB検索
    DBの設定が問題である可能性はどうですか?
  • id:tokyosmash
    >DBの設定
    そのような気がしてきました。

    正常に動かない
    character_set_client utf8
    character_set_connection ujis
    character_set_database latin1
    character_set_filesystem binary
    character_set_results utf8
    character_set_server latin1
    character_set_system utf8

    正常に動く(XREA)
    character_set_client utf8
    character_set_connection ujis
    character_set_database ujis
    character_set_filesystem binary
    character_set_results utf8
    character_set_server utf8
    character_set_system utf8


    ちなみに正常に動かないサーバーはXAMPPで全てインストールしました。どちらもMySQL5.1です。

    latin1になっているところが怪しいですね。少し調べてみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません