Midnightjapan

Tag: utf-8

AJAX on PHP WEB Aplicationのぬかるみ

by jun on 6月.22, 2010, under WEB

こんにちわ!

すっかり家に帰れなくなってきたJUNです。

現在結構でかいPHPクラウドシステムを開発しております。

フレームワークを使って開発効率をあげつつ、サーバーもカスタマイズしてガンガン作ってみました。

CentOS 5.5 +Apache + PHP 5.1.6 (5.2は見送り) +MySQL 5.0.77+GD2です。

これにIFと開発効率をあげるため、AJAXを実装すべく、PrototypeとPHPによる制御が簡単な

PEARライブラリ HTML_AJAX XAJAX CakePHPなどを導入。

さぁ、ガリガリ書くぞ。

おお、こんなことも、あんなこと、おお・・・あん。いやんw

って、ぉぃ。

テストページ作ってる最中は問題なくAJAXの機能を堪能できるんですが

開発中のサーバーに実装してみたら・・・なぜか動きません。

1日かけて文字コードの設定をさまよい歩きました。

Apache(httpd.conf),MySQL(my.ini) ,PHP(php.ini),HTMLのUTF-8化。

いろいろ不備も見つけながら、設定をすすめていくと、ん?

IEだけの問題じゃん。

ということで、グーグル先生をさまよってみると

IEはAjaxの非同期通信でキャッシュを使ってしまうらしい => 対策(具体的には今度書くね)

IEはフォームから送信するときに一部のバージョンでASCIIで送ることがあるのでHeaderをきちんと宣言しないといけない。

IEはバージョンによって・・・もうそれはいろいろでてくるわけですわ。

1日かかって、何も進んでない&何もわからずじまい。

2日目

すべての文字コードをUTF-8へ十分確認したけど、あきらめきれずもう一度確認!

くぅ・・・痛恨のミス!なんでJavascriptのファイルに@charset “utf-8″とか入ってるんだよ!

これかぁ・・・と思いきや、改善せず。

このとき微妙な問題を発見。

ブラウザチェック => 表示される => ソースコード表示 => 問題ない =>ソースをコピーしてエディターへ

すると・・・

???<html>

/省略/

</html>?STM

へ?

もうさっぱりわかんねっすよ。

Ajax?サーバー?ブラウザ?文字コード?エディタ?

いやぁ久しぶりに誰でもいいから女を抱きたくなりました。

(ちなみに私は極度のプレッシャーをかけられると、女を抱きたくなります)

途方もなく、時間もなく、精神状態も限界にきていました。

そんなわけで、ちょっと寝ます。こういうときに何してもいいことありませんから。

翌朝、もうIEの対応は納期延長をきめこんで、もうやらない宣言しようかと思ったのですが

なんだか、ピンときたんです。

これって、PHPでincludeしてるからシステムからでてるんじゃね?

ビンゴでした。

急に発生した問題がまず「エラー c00ce56e のため操作を完了できませんでした

とIEのエラーコンソールに怒られます。

まずこれで見つかったのはphp.iniの中の

「default_charset = “utf8″」

これ間違えらしいです。

正解は

「default_charset = “UTF-8″」

こうしないとIEは勘違い起こすらしいよ。でも、これでもPHP の include問題は解決はしない。

まぁここからも、サーバーの設定やらなにやら、膨大な時間がかかったんですが、月面にたどりついたような感動を与えてくれたサイトがこちら。

phpで.incファイルをincludeするとieですきまがはいる(解決編)

http://pugiemonn.blog6.fc2.com/blog-entry-801.html

結果「utf-8 bom php レイアウト」でグーグル先生に聞いてみなってんで、聞いてみるとビンゴ!

utf-8とutf8-nの違いでした。

utf-8ってBOMなんかつけてたんですね。忘れてました。

このせいで、includeしたときにBOMをみちゃうわけです。

とうぜんこんなもの拾うのはオバカなIEだけでやんす。

そんなわけで、ソースを全部文字コード変換!

問題解決しました。

どうか、一人でも多くのAjax文字コード泥沼戦争から救いの女神がおりますことをお祈りしております。

コメントなし :, , , , , , more...

MySQLのセットアップ

by jun on 6月.07, 2010, under Linux

MySQLのインストールは久しぶり。

なぜか事例の少ないMacでの構築が多く、昔に苦労してそのままであった。

Linuxサーバー販売が増えてきたため、まじめにMySQLサーバーのセットアップを始める。

開始から15秒でYumで完了しました。

WEBDBクラウドの構築のため、Apache WEBサーバーもPHP5.0 もPerlライブラリもセットアップする。

わずか数分でyumで終わった。

Macのときの苦労は一体なんだったのだろう。

見せかけだけが便利そうなMacはやはり嫌いになった。

まるで昔のフラれた女の悪口を言う男のようだ。

反省・・・

外部からの接続を許可するためにMySQL ODBCをダウンロードする。

バージョンがネック。3.5.1は素直に接続が可能だが、実際には文字コードを指定することができない。

そのため、文字コード指定に対応した5.1ドライバーがおすすめ。

文字コードはUTF-8にすべて統一。

Grantの権限設定時にIPまたはホスト名での指定が必須のよう。

とくにクラインとがWindowsの場合。ODBCのドライバーがMySQLのユーザー認証にホスト全部許可「*」にすると必ず接続できなくなる。

MySQL ODBC Dricer 3.5.1ではファイルメーカーから入力したデータは、ファイルメーカー側で表示できても、MySQLをターミナルでみてみると文字化けしてました。

これを、MySQL ODBC Driver 5.1でUTF-8に設定すると、ファイルメーカーから入力した文字もターミナルで奇麗に表示。

これで、WEB+ファイルメーカー+MySQLソリューションを看板にしようと思っています。

クライアントライセンスがかからないWEBから入力。

高速なPHP+MySQLで、複数クライアントからクラウド化。

WEBの弱点である印刷や帳票作成をWEB開発よりコストダウンさせるために、ファイルメーカーを利用する。

Mac+Windowsで提供できるソリューション。

5.1ドライバーでSSLにも対応してくれたおかげで、ファイルメーカーからでも安心。

入力時の確定モーションの制御がネックとなるか。

せっかくはやいMySQLへの書き込みがファイルメーカーからだと異常におそい。

ベンチ調査も必要か・・・今後に期待。

2 コメント :, more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!