2

タイトルのように、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 に格納することを計画しています。そこに「配列」を保存できない/したくない。

ありがとう。

4

0 に答える 0