1

PHPでget_headers関数を使用して、ローカルサーバーのWebサイトからヘッダーを要求します。Webサイトで使用するときに配列を返します。配列を返しません。

返品の例

ローカルサーバーで

配列
((
    [0] => HTTP /1.1301移動
    [サーバー]=>アレイ
        ((
            [0] => nginx / 0.7.42
            [1] => Apache / 2.2.11(Unix)mod_ssl / 2.2.11 OpenSSL / 0.9.8e-fips-rhel5 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4
            [2] => Apache / 2.2.11(Unix)mod_ssl / 2.2.11 OpenSSL / 0.9.8e-fips-rhel5 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4
            [3] => Microsoft-IIS / 7.0
        )。
    [Content-Type]=>配列
        ((
            [0] => text / html; charset = utf-8
            [1] => text / html; charset = iso-8859-1
            [2] => text / html
            [3] => text / html; charset = utf-8
        )。
    [場所]=>配列
        ((
            [0] => http // 3.ly / aXP
            [1] => http // 3.ly / aXP /
            [2] => http // stackoverflow.com
        )。
    [MIMEバージョン]=>1.0
    [Content-Length]=>配列
        ((
            [0] => 277
            [1] => 376
            [2] => 0
            [3] => 122213
        )。
)。

実サーバーで

配列
((
    [0] => HTTP /1.1301移動
    [サーバー]=>nginx / 0.7.42
    [日付]=>2009年10月10日土曜日03:15:32GMT
    [Content-Type] => text / html; charset = utf-8
    [接続]=>キープアライブ
    [場所]=>http // 3.ly / aXP
    [MIMEバージョン]=>1.0
    [コンテンツの長さ]=>277
)。

配列を返しません

ありがとう....

4

2 に答える 2

1

PHPがローカルサーバーと実サーバーでリダイレクトを処理する方法に違いがあるようです。ローカルでも配列を取得すると思いますが、何らかの理由でget_headers()はローカルでリダイレクトに従わないようです。

PHPのバージョンは両方の環境で同じですか?

于 2009-10-10T03:59:34.107 に答える
1

これには理由がないようです。配列1を取得するには、2番目のパラメーターをゼロ以外の値に設定する必要があります。

get_headers($url, 1);

そうすれば、PHP自体または問題のあるサーバーにバグがない限り、どこでも同じように実行されるはずです(どちらもたまにしか使用しないユーザーにとってはまれなケースです)。

次の(複数の)リダイレクトに注意してget_headers、各リダイレクトのヘッダーを配列2として格納します。

array(11) {
  [0]=>
  string(30) "HTTP/1.0 301 Moved Permanently"
  ["Location"]=>  string(22) "http://www.google.com/"
  ["Content-Type"]=>  array(2) {
    [0]=>    string(24) "text/html; charset=UTF-8"
    [1]=>    string(29) "text/html; charset=ISO-8859-1"
  }
...

リダイレクトの特定のヘッダー値は連続して保存されるため、Content-Type[0]任意のsに関連付けることができるように見えますLocation。これにより、配列形式を使用できなくなり、各リダイレクトのヘッダーを正しく取得できなくなります。ヘッダーを解析する必要があるため、行配列の形式はそれほど良くありません。しかし、配列形式を使用すると、最後の場所などを検出できます。

于 2011-03-25T15:14:27.057 に答える