タイトルのように、2 つの異なる PHP バージョンで同じスクリプトを実行しています。
- 私のサーバー 1- 5.2.17
- 私のサーバー 2- 5.3.19
get_headers($url, 1);
$url は、http および .co.uk を含む google (www なし) でした - または、404 を返す任意の URL を使用します。さまざまな出力の例を次に示します。
私のサーバー 1-
[Server] => gws
【ヘッダーより抜粋】
私のサーバー 2-
[サーバー] => 配列 [ヘッダーから収集]
( [0] => gws [1] => gws )
私が推測するのは、サーバー 2 が 301 の場所をたどり、それをヘッダーに追加していることです。サーバー 1 の配列には 301 ヘッダーしかありません。
したがって、サーバー 2 は " http://google.co.uk " に移動します (これは 301 を返します)。そしてそれを「http://www.google.co.uk/」までたどり、両方の応答を同じ出力に追加します。
私の質問は何ですか - 変化の原因は何ですか? PHP チャネル ログを確認しましたが、get_headers への言及が見当たらないので、何か不足しているに違いありません。
異なる出力の原因を知っていて、変更を元に戻す方法を (古い PHP バージョンに戻さずに) 知っているなら、大いに感謝します。cURL を使用できることはわかっていますが、実際には使用したくありません。
完全なコード (検証などなし)
1.$address = ($_POST['address']);
2.$headerinfo = get_headers($url, 1);
$server = $headerinfo[Server];
PHP 5.2 では、$server を echo すると、「Apache」のようなものになります。
PHP 5.3 の場合 - $server を echo すると、"Array" になります (301 に達した場合)。
最後に、$sever を DB に格納することを計画しています。そこに「配列」を保存できない/したくない。
ありがとう。