2011-01-01 6 views
0

ich versucht habe:PHP-Header ('Ort:'); Problem auf bestimmten Servern auf unserem Firmennetz

header('Location: http://www.google.com/'); 
die(); 

Es auf GoDaddy arbeitet und nicht auf beiden Ipage und Startlogic in meinem Netzwerk bei der Arbeit mit FireFox, IE und Chrome. Sie arbeiten in der öffentlichen Bibliothek auf allen drei Servern mit Firefox. Die Person, die unsere IT macht, denkt, dass es sich um einen Cisco-Konflikt handeln könnte, konnte es jedoch nicht lösen.

Ist dies ein weit verbreitetes Problem genug sollte ich vermeiden, PHP 302 umleitet

Irgendwelche Ideen, wie man dieses Problem zu beheben.

** Ich habe zu einem Kommentar unten hinzugefügt und sollte es hier oben haben
"Gibt es einen besseren Begriff als hängt. Wie auch immer es hängt, wenn ich ein Skript ohne Ausgabe ausführen."
GoDaddy funktioniert die beiden anderen halten gehen und gehen, bis sie eine Auszeit

+0

Was bedeutet "fehlgeschlagen" eigentlich hier? Was ist der Kontext (in Bezug auf Anfragedaten, Anfrage-Methode etc.)) zu diesem Aufruf in diesen Fällen? – Rob

+0

Können Sie normalerweise auf http: // www.google.com zugreifen und die Adresse in Ihren Browser eingeben? – lonesomeday

+0

ja google funktioniert und es heißt warten in der unteren linken Ecke, so hängt möglicherweise besser als fehlschlägt – geroge

Antwort

3

Nun,

Ihre Frage ist nicht ganz wohlgeformt ist. Ich meine, wir alle erwarten zumindest eine Fehlermeldung oder ein schlechtes Verhalten, eher ein einfaches "fail".

Wie auch immer, ich vermute, Sie bekommen nur eine leere Seite, versteckt eine Warnung sagen, dass die Header bereits gesendet wurden. Dies ist ein häufiges Problem in PHP, glaube mir.

Um Fehler zu aktivieren, müssen Sie entweder php.ini konfigurieren oder alle Fehler über Code aktivieren, damit Sie jede von PHP generierte Warnung überprüfen können.

Meistens wird dieses Problem (das auf einigen Systemen auftritt und bei anderen nicht auftritt) von UTF-8 BOM verursacht, das sind die 3 Bytes, die Sie vor dem <?php am Skriptanfang nicht sehen. Dies wird normalerweise durch Schreiben des PHP-Skripts in Notepad oder einen UTF-8-Editor und Ausführen des Codes in einer Nicht-UTF8-Umgebung verursacht (ich glaube, Linux bevorzugt ASCII ist das richtig?)

Wie auch immer, Sie könnten versuchen, die Datei zu bearbeiten mit einem nativen Editor von der Konsole, oder von Wordpad, oder besser Notepad ++, und speichern Sie es als ASCII.

Wenn das das Problem ist, werden Sie es lösen. Der Grund dafür ist, dass PHP die BOM liest und sie in eine HTTP-Antwort druckt, nach der Sie keinen HTTP-Header mehr setzen können. Das ist es.

Ich hoffe, dass ich Ihnen geholfen habe.

+0

Ich benutze Netbeans und ich änderte den Code ini_set ('log_errors', 0); ini_set ('error_log', 'syslog'); ini_set ('display_errors', '1'); ini_set ('display_startup_errors', '1'); Kopfzeile ("Standort: http://www.google.com/"); sterben();/* hängt noch */ – geroge

+0

Wenn es ** HANG ** mit Ladeanzeige aktiv ist, dann könnte meine Antwort falsch sein ...... –

+0

Gibt es einen besseren Begriff als hängt. Jedenfalls hängt es, wenn ich ein Skript ohne Ausgabe ausführe. – geroge

0

Haben Sie versucht, einen korrekten, vollständigen HTTP-Header zu erstellen?

Über Header ist sehr minimal, und es fehlt der Statuscode - das sollte mindestens eine HTTP-Antwort sein. Die meisten Clients und Proxies werden raten, was Sie meinen. Eine korrekte Antwort könnte helfen. Wählen Sie den entsprechenden 3xx Fehler, wie

header('Status: 301 moved permanently'); 

und möglicherweise

header('Content-type: text/html; charset=utf-8'); 

, wenn Sie UTF-8 verwenden (die Antwort die BOM in Bezug auf einen weiteren aussichtsreichen Kandidaten).

Verwandte Themen