- 締切済み
php5とmysql5の設定
eucjpで記述したphpのフォームからmysqlにデーターを格納して取り出すDBがあり、日本語表示が化けない設定は出来たのですが同じphpから検索をするとヒットしません。 同じphpスクリプトで別のサーバー(phpとmysqlは同じバージョンです)では問題なく稼働していたので現在のサーバーのphp.iniとmy.cnfの問題だと思うのですが他の似たような状況の方の解決策をなぞってeucjpに統一するなど一通り試したのですがどうもうまく行きません。 ちなみにサーバーは自サーバーでApache/2.2.3 (Debian) 、PHP/5.2.0-8+etch7、mysqlは5.0.32です。 php.iniは mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto (EUC-JPにすると入力後?になる) mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; my.cnfは [client] default-character-set= ujis [mysqld] skip-character-set-client-handshake default-character-set = ujis character-set-server = ujis [mysql] default-character-set = ujis です。よろしくお願いします!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
どのように上手く行かないのでしょうか? 欠かれている情報だと、通常は検索できて、ある一文字の検索文字の場合のみ検索に失敗している状態じゃないかと思います。 その場合、mbstring.encoding_translationやmbstring.http_inputを利用しているのが問題のように思えます。 これらをオフにするか、mbstring.detect_orderでEUC-JPの優先順位を上げることで上手く動作するかも知れません。 他の問題だった場合、どのような問題が発生するのかを書かれると問題の切り分けがしやすいかも知れません。
お礼
ご意見、ありがとう御座います。 同じphpのフォーム(eucjp)でDBに「埼玉県」と入力して、全件表示画面にはその項目が表示されます。「埼玉」や「県」などで検索するとヒットしないのです。。。 重ね重ねになりますが同じOSでmysqlやphp、phpmyadminからapacheまで同じバージョンのサーバーで稼働していたスクリプトなのでプログラムには問題ないと思われます。 mbstring.encoding_translationやmbstring.http_inputをOffとコメントにしてみましたが状況変わりませんでした。 mbstring.detect_orderはautoからEUC-JPに変更しましたがこちらも変化無しです。 一つ気がついたのは検索ウインドに半角のゼロ「0」を入れるとDBには「0」の文字列は無いのにヒットします。おっ!と思って半角「x」を試しましたがヒット無し、ヒントになりそうなのは半角バックスラッシュ「/」を入力するとヒット無しですが検索窓の「/」が半角クエスチョンマーク「?」に変わります。これやっぱ文字の入力と出力がコードが合っていないということですよね。。。? どう合わせれば良いのかさえ分かればどうにかなるのですが。。