FreeBSD/PHP: Problem mit der PHP-Funktion mktime

From: Bernd Muent <muent(at)euroscript-ls.de>
Date: Mon, 02 Sep 2002 09:42:22 +0200

Ich habe es auf FreeBSD 4.4 und 4.6 jeweils mit Apache 1.3.26 und PHP 4.2.2
gemacht.

When ich mir eine Jahresübersicht anschaue, werden die Monate März 2002,
2013,2024 und 2030 nicht angezeigt.

Ich hab folgendes herausgefunden:

In der Datei year.php gibt es die Zeile:

$monthend= mktime(2,0,0,$thismonth+1,0,$thisyear);

die dazu dient, das Monatsende zu ermitteln.

Für die Werte $thismonth=3, $thisyear=2002 liefert die Funktion -1 zurück und
der Monat wird nicht korrekt dargestellt.

Dasselbe für 2013, 2019, 2024 und 2030. Alle anderen Monate funktionieren.

Ich habe diesen Webcalendar auch auf einem Linux 2.4.19 Kernel (basierendauf
einem SuSe 7.2-System) installiert und siehe da: Die Function mktime liefert
korrekt 1017532800 als Timestamp zurück und der Monat wird dargestellt.

Ich weiß nicht, ob das jetzt ein Problem von PHP oder vom FreeBSD ist, denn auf
dem Linux mit derselben PHP-Version funktioniert es ja.

Mein Workaround ist, diese Codezeile zu ändern:
$monthend= mktime(2,0,0,$thismonth+1,1,$thisyear)-86400;

sodaß mktime nicht mit dem ungewöhnlichen Wert day=0 aufgerufen wird. Und es
geht.
[aus der PHP-Doku: int mktime (int hour, int minutes, int seconds, int month,
int day, int year)]

Soll ich jetzt die Schuld den Webcalendar-Codewritern, PHP oder FreeBSD geben?

Bernd

-- 
Bernd Münt                         Durchwahl: 030/69032-509
euroscript Language Services GmbH  Zentrale:  030/69032-300
Abteilung IT-Management            Fax:       030/69032-333
Grimmstr. 23                       Mail: muent(at)euroscript-ls.de
10967 Berlin                       Web:  http://www.euroscript-ls.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 02 Sep 2002 - 09:42:26 CEST

search this site