2009-10-10 8 views
1

i en utilisant get_headers Fonction en PHP pour demander des en-têtes de site dans des réseaux de retour du serveur local mis lorsque l'utilisation dans mon site Web ne retourne tableauxphp: get_headers Résultats de la fonction sont différents

exemples pour les retours

dans serveur local

 
Array 
(
    [0] => HTTP/1.1 301 Moved 
    [Server] => Array 
     (
      [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] => Array 
     (
      [0] => text/html; charset=utf-8 
      [1] => text/html; charset=iso-8859-1 
      [2] => text/html 
      [3] => text/html; charset=utf-8 
     ) 
    [Location] => Array 
     (
      [0] => http//3.ly/aXP 
      [1] => http//3.ly/aXP/ 
      [2] => http//stackoverflow.com 
     ) 
    [MIME-Version] => 1.0 
    [Content-Length] => Array 
     (
      [0] => 277 
      [1] => 376 
      [2] => 0 
      [3] => 122213 
     ) 
) 

en temps réel serveur

 
Array 
(
    [0] => HTTP/1.1 301 Moved 
    [Server] => nginx/0.7.42 
    [Date] => Sat, 10 Oct 2009 03:15:32 GMT 
    [Content-Type] => text/html; charset=utf-8 
    [Connection] => keep-alive 
    [Location] => http//3.ly/aXP 
    [MIME-Version] => 1.0 
    [Content-Length] => 277 
) 

Je ne vais pas retourner les tableaux

merci ....

Répondre

1

Il semble y avoir une différence dans la façon dont PHP gère les redirections vers votre serveur local et sur le vrai serveur. Je pense que vous obtiendrez des tableaux localement aussi, mais pour une raison quelconque, get_headers() localement ne semble pas suivre les redirections.

La version de PHP est-elle la même dans les deux environnements?

+0

vous THNK aide PHP Version dans le serveur local 5.2.6 en temps réel serveur \t 5.2.8 – Testr

0

Il n'y a pas de raison pour cela. Vous devez définir le deuxième paramètre à une valeur non nulle afin d'obtenir un tableau 1:

get_headers($url, 1); 

Si vous le faites, il doit exécuter le même partout, à moins d'un bogue dans PHP lui-même ou dans le serveur problématique (les deux sont des cas rares pour l'utilisateur occasionnel).

Notez que get_headers suit (multiple) réoriente et stocke les en-têtes de chaque redirect comme un tableau 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" 
    } 
... 

Les valeurs d'en-tête particulier pour les redirections sont stockés successivement, de sorte qu'il ressemble Content-Type[0] peut être liée à l'un des Location s, ce qui rend le format de tableau inutilisable pour obtenir les en-têtes de chacune des redirections correctement. Le format de tableau linéaire n'est pas beaucoup mieux, car vous devrez analyser les en-têtes. Mais avec le format de tableau, vous pouvez détecter le dernier emplacement, etc.

Questions connexes