Seite 1 von 1

Riesenproblem - Zeitausgabe in php differiert von Systemzeit

Verfasst: 21.04.2004 01:00
von GnRFans
Hi,

ich bin gerade etwas ratlos und weiß nicht mehr weiter. Also folgendes Problem: Ein kleines PHP-Script soll mir die Uhzeit des Webervers sagen. Das Script sieht so aus:

Code: Alles auswählen

<? 
echo "system('date') = " ; 
system('date'); 
$today = getdate(); 
$month = $today['month']; 
$mday = $today['mday']; 
$year = $today['year']; 
$hours = $today['hours']; 
$minutes = $today['minutes']; 
$now = sprintf ("$mday $month $year %02d:%02d", $hours, $minutes); 
echo " Der Web-Server sagt: Es ist der $now Uhr"; 
?>
Ausgegeben werden zwei verschiedene Zeiten die sich genau um 6h unterscheiden. Die Ausgabe schaut so aus:

system('date') = Die Apr 20 18:11:11 CEST 2004 Der Web-Server sagt: Es ist der 20 April 2004 12:11 Uhr

Hat jemand eine Idee warum der Webserver ne andere Zeit ausgibt? Ich habe ja den Verdacht, daß PHP eine andere Zeitzone verwendet, aber wo kann ich die bei PHP einstellen? In der php.ini habe ich nichts gefunden. Im Web habe ich auch nichts dazu gefunden.

Verfasst: 21.04.2004 08:47
von PhilippK
Geb doch mal testweise das Datum mit

Code: Alles auswählen

date('r')
aus. Dann siehst du auch die Zeitzone. Die kannst du übrigens nicht in der php.ini einstellen - das ist eine Einstellung des Servers.
Ggf. musst du das manuell auswerten und ggf. korrigieren - siehe auch http://de3.php.net/manual/de/function.date.php

Gruß, Philipp

Verfasst: 21.04.2004 14:05
von NitroXX
Also ich habe das Script mal verbesert. Das sieht jetzt so aus:

Code: Alles auswählen

<?
 echo "Systemzeit nach system('date'): " ;
 system('date');
 echo "<br>";
 echo "Zeit ausgelesen mit PHP: ";
 echo date("D M j G:i:s T Y");
?>
Die Ausgabe sieht so aus:

Systemzeit nach system('date'): Mit Apr 21 14:14:23 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 8:14:23 EDT 2004

Das Problem ist jetzt, dass der Server an sich irgend wie wohl doch die richtige Zeitzone hat, steht ja da. PHP hat das aber wohl noch nicht mitbekommen. Hat jemand ne Idee wie man das Problem beheben kann? Also nicht Symptombehandlung durch willenloses addieren von Sekunden zur Zeit sondern die Ursache des Problems zu beseitigen?

Verfasst: 21.04.2004 22:58
von PhilippK
Hast du das mal mit dem

Code: Alles auswählen

date('r')
ausprobiert?

Gruß, Philipp

Verfasst: 22.04.2004 16:27
von NitroXX
Ja, habe ich, da kommt dann folgendes bei raus:

Thu, 22 Apr 2004 10:23:02 -0400

Aber Die Zeitzone sehe ich ja auch so:

Code: Alles auswählen

echo date("D M j G:i:s T Y");
Dann wird mir das ausgegeben:
Zeit ausgelesen mit PHP: Wed Apr 21 8:14:23 EDT 2004

Eastern Daylight Time. Was ich hierbei nicht verstehe ist warum das System ne anderen Zeit ausliest als php. Auf den Servern die ich selbst installiert habe gehen beide Zeiten absolut synchro und zwar ohne irgend welche angepassten Parameter, additionen von Sekunden und ähnlichen Workarounds. Den Server mit dem Zeitproblem habe ich nicht installiert und ich habe da auch keinen root-Zugriff. Leider. Ich habe gestern die Zeit mit dem von mir weiter oben geposteten Script über einen längeren Zeitraum gemonitored und dabei festgestellt, dass die Zeitzonen springen. Ich konnte das selbst fast nicht glauben, wenn ichs nicht selbst gesehen hätte würde ich mir verarscht vorkommen. Ein Auszug aus dem Logfile:

Systemzeit nach system('date'): Mit Apr 21 15:05:16 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 15:05:16 CEST 2004

Systemzeit nach system('date'): Mit Apr 21 15:06:02 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 15:06:02 CEST 2004

Systemzeit nach system('date'): Mit Apr 21 15:06:34 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 15:06:34 CEST 2004

Systemzeit nach system('date'): Mit Apr 21 15:06:45 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 15:06:45 CEST 2004

Systemzeit nach system('date'): Mit Apr 21 15:07:25 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 9:07:25 EDT 2004

Systemzeit nach system('date'): Mit Apr 21 15:07:42 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 9:07:42 EDT 2004

Systemzeit nach system('date'): Mit Apr 21 15:08:02 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 9:08:02 EDT 2004

Systemzeit nach system('date'): Mit Apr 21 15:08:38 CEST 2004
Zeit ausgelesen mit PHP: Wed Apr 21 15:08:38 CEST 2004

Systemzeit nach system('date'): Mit Apr 21 15:08:53 CEST 2004 Zeit
ausgelesen mit PHP: Wed Apr 21 15:08:53 CEST 2004

Wie man sieht springt die Zeitzone ausgelesen mit PHP zwischen EDT und CEST. Ist mir ziemlich schleierhaft warum. Hat da jemand ne Idee oder gar nen Lösungsansatz? Ich bin wohl der einzige Trottel der son Problem hat, ich habd as halbe Netz abgesucht nach dem Problem und genau nichts gefunden. :-?