« 2007年4月 | トップページ | 2007年6月 »

2007/05/13

Cookieにはまる(「ドメインにはアンダーバーは使えないのだ」の巻)

Click Here!

月額10,290円の専用レンタルサーバー【E-server】


1年半ほど前に開発していたプロジェクトを復活させようとして、Vistaにテストサーバを構築して、テストし始めました。すると、1年半前はちゃんと動いていたはずのWEBアプリ(PHP+MySQL)が全く動きません。cookieによるセッション管理を行っているのですが、cookieが焼かれていないようです。ためしに、IE7のアドレス欄に、「JavaScript:alert(document.cookie);」とやってみると、やっぱり空です。あれー、そんはなずはないんだけどな・・・。

結論的には、テストサーバでホストアドレスを「_(アンダーバー)」を含めていることが原因でcookieがIE7では焼かれていなかったのですが、それに気づくのに数時間かかかりました。こういのうを「はまる」というんですね。

まず、IE7の設定を見直しました。メニューの「ツール」→「インターネットオプション」→「プライバシー」で「中-高」を「中」に下げてみるが駄目でした。どうなっているんだ、とFirefoxでやってみると、ちゃんとログインできます。クッキーは焼かれているみたいです。

PHPのsetcookieがIE7に対応していないのかなと一瞬思いましたが、今までIE7で何度もテストを行ってきて、こんなのは初めてです。ただ、今回、Vistaでテストサーバを構築するに当たり、PHPのバージョンを今までの4.3xではなく5.2にしてみましたので、それが原因かなと考えました。試しに、4.3xでXP場に構築したサーバで試してみました。すると、動きました。

さらに、テストサーバではなくて、レンタルサーバにアップしてテストしてみたところ動きます。そのため、「ああ、PHPのバージョンのせいだな」と間違った仮説をここで立ててしまいました。

そこで、PHP.netのページを覗いてみました。まず、PHPの5.2からクロスサイトスクリプティング対策として「httponly」という設定が可能になったことを知りましたが、これは関係なさそうです。続いて、ページ下のユーザーズ・コメントを読んでいて、解決策の糸口が見つかりました。

domain names must contain at least two dots (.), hence 'localhost' is invalid and the browser will refuse to set the cookie!
とあります。さらに、

It is not the length of the hostname but the use of the underscore (_) char within it which makes IE (silently) freak out. The use of underscores in hostnames is an RFC violation and may very well not be supported at all by a browser, proxy or any http client.


というコメントに目が留まりました。「アンダーバー」とか「アンダースコア」と呼ばれるものはRFC違反だそうだ。恥ずかしながら知りませんでした。

今回、Vistaのサーバに構築したテストサーバは安易にも「test_vista.*****.jp」とかいう形式のものでした。XPのテストサーバは「test2.*****.jp」とかいうものでしたので問題なく動作したというわけです。つまり、cookieが動作しなかったのは、「Vistaだからでもなく」「IE7の保護モードのせいでもなく」「PHPのバージョンのせいでもなく」、「私のテストサーバのホスト名の付け方がRFC違反だったから」でした。分かってみれば単純な話ですが、はまってしまいました。

ちなみに、IE6でも、アンダーバーのついたホスト名ではcookieは焼けないようで、昔からのようです(Windows Updateで或る時からそのようなパッチが提供されたという情報も後で読みましたが、細かいことはまだ調べられていません)。いずれにせよ、今の今まで「_」がドメインに使えないって知らなかったのが恥ずかしいです。メールアドレスのアカウント名では普通に使えていますからね。私は基本的にハイフン「-」よりアンダーバー「_」の方が好きなんですが・・・。アンダーバーがあると、URLのリンクの下線とくっついて、フィッシング詐欺などの温床になりやすいかもという配慮でそうなっているのか、理由がよく分からないですね。はまりました、むむむ。

Click Here!

■当サイト オススメのレンタルサーバー
 ウイルスチェックが全サービス無料のほか、フリーダイヤルによる
 安心の電話サポートが深夜まで対応している。
 月額1,995円からと格安でこのサービスを受ける事が出来る。
 CGI/SSI/PHP/MySQL/PostgreSQL のほか、ショッピングカートも無料。

| | コメント (0) | トラックバック (0)

Vista IE7保護モードの影響がこんなところにも--「Acrobatがライセンス認証されていないため、Adobe PDFの作成を続行できません。」



先日、Acrobat 8を購入しました。ほとんど使っていなかったのですが、いざIE7の印刷メニューからAcrobatでPDF化しようとしたら、下記のようなエラーが表示されました。



「Acrobatがライセンス認証されていないため、Adobe PDFの作成を続行できません」って言われますが、確かにライセンス認証はしているはずです。IE7からではなく、Acrobatを直接起動してもライセンス認証云々のメッセージは表示されません。すぐに、Googleで検索してみました。すぐに見つかりました。

●Internet Explorer 7 から Adobe PDF で印刷すると「Acrobat がライセンス認証されていないため...」エラーが発生する
http://support.adobe.co.jp/faq/qadoc/AJ25.nsf/900f7bf03
cd385244925696900084026/96da26bc37914c4e4925727a0002fb9c?OpenDocument


結局、Vista IE7の保護モードが原因ということで、一時的に保護モードを解除すれば、確かにPDFを作成できました。でも、これはかなり面倒です。また、エラーメッセージをVistaの場合とそうでない場合とで場合分けする処理をAdobe社はプログラムに組み込むべきだと思います。ライセンス認証が済んでいるかを示すファイル・レジストリーにアクセスできないのか、それとも、アクセスできるけれど認証済みという情報がない場合とでは、プログラムで十分に区別できるように思います。



アイル ホスティングサービス独自CGI&PHP利用可能!月額1995円~「i-02」登場!

| | コメント (1) | トラックバック (0)

2007/05/07

Office2007の試用版をアンインストールしたら、Vista端末が変になった(mailtoがボロボロ)

VistaでOffice2007の試用版をアンインストールしたらとんでもないことになりました。mailtoのタグの部分やメールソフト(Windows Mail)のプレビュー内に表示されているメールアドレスをクリックすれば、作成画面が表示されるはずが、なぜかIE7が起動し、しかも無限に開いていきます。まるでウイルスにやられたかのようです。

mailtoの関連付けがおかしくなっているのだろうと思って、コントロールパネルの「既定のプログラム」で確認してみると、mailtoはやはりWindows Mailになっています。レジストリーがへんてこになっているのかもしれないと思って、一端、Thunderbirdをmailtoに関連付けました。ところが状況は変わらず。

もう一度、Windows Mailに関連付けても、やっぱり駄目。Windowsを再起動しても、やっぱり駄目。Becky!に関連付けを行っても駄目でした。

仕方がないので、バックアップから復元することにしました。運良く、ゴールデンウィーク中の5月2日にバックアップを取っていたのでした。その時に参考にしたのが(というより、そのまま真似したのが)、

●Mac OS XからWindowsパーティションをバックアップするには
http://blog.goo.ne.jp/pcqanda/e/57bf41a08c432809fd14d075788fb338

このバックアップに救われました。後から追加したメッセージルールを再作成するだけで、メールデータは既にEドライブに移していたりしていましたので、難を逃れました。バックアップさまさまです。

バックアップからの復活後、mailtoがおかしくないのを確認して、その後、もう一度、Office2007をアンインストール後、Windowsを再起動してみましたが、やっぱり、mailtoがおかしくなっていることを再確認しました。この不具合は、少なくとも私の環境では再現性があります。

-- 2007年7月6日9時16分ごろ追記start ---
下記にあるコメントで教えていただいた方法で、Office 2007試用版のアンインストール後のmailtoの異常を修正できました。コメントをくださったSAM2さん、ありがとうございました。
-- 2007年7月6日9時16分ごろ追記end ---



Movable Typeでの本格ブログ運営も簡単に始められます!!

| | コメント (2) | トラックバック (0)

文書は保存されましたが、音声認識データを保存する十分な空き領域がないため、データは失われました。

先日、WORD2007の試用版で作成したファイルを編集しようと開くと、試用期限が切れたという表示が出ました。仕方がないので、Office2007の試用版はアンインストールし、そのファイルを別のパソコン(Office2003がインストール済み)で開くことにしました。すると、

「文書は保存されましたが、音声認識データを保存する十分な空き領域がないため、データは失われました。録音していない時は、必ずマイクをオフにし、ディスクで利用できる記憶域を確認してください。」というエラーが結構な頻度で表示されます。



のような感じです。

早速、Googleで調べてみましたら、すぐに原因が分かりました。Googleって本当に便利。

● 使用中または文書の保存時に "音声認識データを保存する十分な空き領域がないため、データは失われました" と表示される場合の対処方法
http://support.microsoft.com/kb/881872/ja

ここに書かれている設定で、たしかにエラーメッセージは出なくなりました。しかし、疑問は残ります。なぜ、Vistaに入れたOffice2007(試用版)のときはこのエラーが出なかったのだろう?と。保存してできたファイルはせいぜい100KB程度だったと思うのに。また、Office2003が入っているパソコンだって、実際のところ4GB以上空き容量があって、どんな巨大な音声データが混じっていて、容量オーバーになっているのか気になたからです。



〔ラピッドサイト〕仮想専用サーバ「VPS!RVシリーズ大好評」

| | コメント (0) | トラックバック (0)

« 2007年4月 | トップページ | 2007年6月 »