mmofacts.com

Komische Meldungen beim benutzen der Funktion "date()" in PHP

gepostet vor 17 Jahre, 3 Monate von DrakeL
Hi,
ich bekomme seit neustem komische Meldungen beim Benutzen der Funktion "date()" in PHP. Ich weiß nicht, ob das erst seit der Umstellung auf PHP 5 ist oder später (vielleicht wurde bei meinem Server was umgestellt), aber kennt jemand die Ursache dieser Meldung bzw. die Lösung:
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in
Benutzen tue ich die Funktion in der Form:
/**

* Gibt das Jahr des Timestamps zurueck
*
* @return string Jahr des Timestamps
*/
public function getYear()
{
return date('Y', $this->timestamp);
}
In der Membervariable "timestamp" ist dabei ein beliebiger Unix Timestamp enthalten.
gepostet vor 17 Jahre, 3 Monate von Drezil
mach einfach, was dir im fehler empfohlen wurde:
die zeitzone in der php.ini auf "Europe/Paris" setzen, oder dies beim scriptstart über date_default_timezone_set('Europe/Paris'); machen.
Es ist eben nicht gut sich auf die "systemeinstellungen" auf deinem server zu verlassen .. wenn z.b. dein hoster an was rumspielt (kann bei webspace ja mal vorkommen), oder z.B. UTC als "standardzeit" gesetzt ist, dann kann date(...,time()); auch mal "falsche" werte zurückliefern..
deswegen wurd die einstellung mit php5 eingeführt.
Angemeckert wird sie nicht wirklich, da dies nur im errorlevel E_STRICT der Fall ist (und dazu E_ALL | E_STRICT in der php.ini aktiviert sein muss), und das per default nicht gemeldet wird.
HTH
gepostet vor 17 Jahre, 3 Monate von DrakeL
Thx für die Antwort, das erklärt es.
Beim Error Reporting hab ich alles angeschaltet inklusive E_STRICT. Nur ob ich die Zeiteinstellung beeinflussen kann, weiß ich nicht. Zugriff auf die php.ini hab ich nicht, höchstens über .htaccess oder direkt über PHP, aber da bekommt mein Hoster gleich eine E-Mail.
gepostet vor 17 Jahre, 3 Monate von DrakeL
Falls jemand eine alternative Lösung benötigt wie ich ohne Zugriff auf die "php.ini":
bitte fügen Sie in Ihre Datefunktion bzw PHP-Scripte folgendes ein:

date_default_timezone_set('Europe/Berlin');
gepostet vor 17 Jahre, 3 Monate von FateF8
hi,
ein ähnliches problem hatte ich auch schon.
wenn du keinen zugriff auf die php.ini hast, um die einstellungen für date.timezone vorzunehmen, kannst du, bevor du date verwendest, wie es dir die e-meldung vorgibt, date_default_timezone_set verwenden
date_default_timezone_set("Europe/Berlin");

mit php 5.1 (glaub ich) wurden date- und time-funktionen überarbeitet.
seit dem ist php nun ziemlich genau, was die einstellungen angeht
der parameter-string (die zeitzonen) sind, soweit ich das noch in erinnerung habe, nach kontinenten unterteilt, vllt. einfach mal php-timezones googlen oder so.
gruss,
FateF8

Auf diese Diskussion antworten