この PHP スクリプトを呼び出すと、ブラウザから非常に奇妙な反応が発生します。
<?php
$map = array(
'a' => function(){
print_r('a');
},
'b' => function(){
print_r('b');
}
);
$map($_GET['v']);
?>
そこに誤りがあることに、私はすでに気づいていた。次のようにする必要があるため、呼び出しの構文が間違っています。
$map[$_GET['v']]();
問題は、この間違いに対するブラウザの反応が本来あるべきものではないということです。
このスクリプトを実行すると、「接続がリセットされました」というメッセージが表示されます。他の PHP ファイル (および間違いを修正した後のこのファイル) が完全に実行されるため、サーバーは正常に稼働しています。
しかし、実際に私を困惑させているのは、ブラウザのナビゲーション バーが何をするかということです。URLを打ち込むと
localhost/cerdo.php?v=a
バーの内容が
www.localhost.com/cerdo.php?v=a
www.localhost.com 部分は Firefox でのみ発生するようです。Chromiumで試してみましたが、同様のメッセージ(「データが受信されていません」)が表示されますが、URLは同じままです。
何が起こっている?これは意味がありますか?PHP は構文エラーを報告すべきではありませんか? そして、一体なぜ Firefox は www.localhost.com にリダイレクトするのでしょうか?