Midnightjapan

Tag: Apache

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...



何かお探しですか?

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

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