作者: 閑舎
日時: 2007/9/20(11:23)
皆さん、こんにちは。

存在証明みたいな記事で申し訳ないのですが。

この間、PHP 4.4 でちょっとした作業をしていた時の話です。

親スクリプトファイルから、require を使って子スクリプトを呼び出し、子スク
リプトがまたケースに応じて require を使って孫スクリプトを呼び出すような
構造だったと記憶しています。

ちなみに、親スクリプトはデータベースとして MySQL を使ってました。

この時、タイトルに書いた不可解な状況に直面しました。

ソースの構造、文法等を見直して、さあ、ブラウザで表示してテストしてみよう
と思ったんですが、全く反応がありません(IE, FireFoxとも)。ブラウザ画面は
真っ白、ソースは白紙、エラーログにも何も残っていません。

「だめか」と思ってはみたものの、ある程度時間をかけて作っていたので、あき
らめきれず、エラーの原因を探っていたところ、require で呼び出した側のスク
リプト内に書かれた素の html ソースに

  <img src="not_exist.jpg">

のような存在しない URL を参照していた画像タグがあり、これを存在するもの
に直したところ、突然ブラウザ画面に思った通りの表示が出ました。

「?」

PHP は内部的に HTML ソースの解析機能を持っていることはわかりますが、「画
像の URL まで調べるか、ふつう?」と思ってしまいます。また、スクリプト構
造が複雑でなければ、こんなエラーに出合ったこともありません。

ぐぐったりしても、それらしいページに出合うことはなく、時間も限られている
ので、アルゴリズムを変更して当初の目的は何とか達しましたが、いまだに上の
ような事態の原因はわからず、不可解な謎として記憶に残っています。

なんでこんなことになるんでしょう?

--
本田博通(閑舎)
テキストとスクリプトの http://www.rakunet.org/TSNET/