PDA

Bekijk Volledige Versie : php apache klok



fjab
07/04/03, 16:50
Hallo allemaal,

Mijn webserver met php en apache wordt op tijd gezet via ntpd.
Op de webpagina wordt zo hier en daar ook een tijd gegenereerd met echo
date("H:i")
Nu blijkt die tijd 2 uur later te zijn dan de tijd van linux.
Dus linux geeft 15:00:00 en php 13:00:00
Waar zit em dat in?

groet,

Franklin

Raginfury
07/04/03, 17:35
In article <b6s33h$2pb2$1@nl-news.euro.net>, franklin@propane.enel
says...
> Hallo allemaal,
>
> Mijn webserver met php en apache wordt op tijd gezet via ntpd.
> Op de webpagina wordt zo hier en daar ook een tijd gegenereerd met echo
> date("H:i")
> Nu blijkt die tijd 2 uur later te zijn dan de tijd van linux.
> Dus linux geeft 15:00:00 en php 13:00:00
> Waar zit em dat in?

Misschien de tijdzone?

Rene Pijlman
07/04/03, 17:35
fjab:
>Dus linux geeft 15:00:00
^^^^
Het is wonderbaarlijk hoe mensen er in nieuwsgroepen telkens
weer in slagen de meest essentiele informatie weg te laten :-)

%date
Mon Apr 7 17:25:07 CEST 2003
^^^^
Tijdzone

>en php 13:00:00

PHP-code?

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

fjab
08/04/03, 14:35
"Rene Pijlman" <reply.in@the.newsgroup> schreef in bericht
news:r1639vgmambs9i4dk6aehacq61n3qc91os@4ax.com...
> fjab:
> >Dus linux geeft 15:00:00
> ^^^^
> Het is wonderbaarlijk hoe mensen er in nieuwsgroepen telkens
> weer in slagen de meest essentiele informatie weg te laten :-)
>
> %date
> Mon Apr 7 17:25:07 CEST 2003
> ^^^^
> Tijdzone
>
> >en php 13:00:00
>
> PHP-code?
>
> --
> René Pijlman
>
Tja renee, je kan je daar inderdaad over verbazen, maa als ik wist welke
data ik je moest aanleveren had ik waarschijnlijk ook het probleem niet
meer, maar dat terzijde .
Linux geeft aan:
Tue April 8 14:30:49 CEST 2003
en PHP geeft aan:
12:30 met de code: echo date("H:i")

Hoop dat dit is wat je bedoeld

groet,

Franklin
> Wat wil jij leren? http://www.leren.nl

Daniel Tryba
08/04/03, 15:05
fjab <franklin@propane.enel> wrote:
> Linux geeft aan:
> Tue April 8 14:30:49 CEST 2003
> en PHP geeft aan:
> 12:30 met de code: echo date("H:i")
>
> Hoop dat dit is wat je bedoeld

En in wat voor een tijdzone denkt PHP te zitten? (zie
http://php.net/date om daarachter te komen).

--

Daniel Tryba

fjab
08/04/03, 15:20
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:b6ugoa$9k9$1@news.tue.nl...
> fjab <franklin@propane.enel> wrote:
> > Linux geeft aan:
> > Tue April 8 14:30:49 CEST 2003
> > en PHP geeft aan:
> > 12:30 met de code: echo date("H:i")
> >
> > Hoop dat dit is wat je bedoeld
>
> En in wat voor een tijdzone denkt PHP te zitten? (zie
> http://php.net/date om daarachter te komen).
>
> --
>
> Daniel Tryba
>
Denk dat je gelijk hebt:
Tue Apr 8 13:08:04 UTC 2003
Nu is wel de vraag, waar en hoe stel ik dat bij dat het CEST wordt?

groet,

Franklin

Daniel Tryba
08/04/03, 15:50
fjab <franklin@propane.enel> wrote:
> Denk dat je gelijk hebt:
> Tue Apr 8 13:08:04 UTC 2003
> Nu is wel de vraag, waar en hoe stel ik dat bij dat het CEST wordt?

http://php.net/putenv

BTW zie de User Notes en zie dat je niet de enige bent met dit
"probleem".

--

Daniel Tryba

Rene Pijlman
08/04/03, 18:05
fjab:
[Timezone]
>Nu is wel de vraag, waar en hoe stel ik dat bij dat het CEST wordt?

Het beste zou zijn dat de systeembeheerder ervoor zorgt dat de
TZ environment variabele goed wordt gezet in de environment van
het Apache/PHP-proces.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

fjab
08/04/03, 19:20
"Rene Pijlman" <reply.in@the.newsgroup> schreef in bericht
news:n5s59vgboentqqp9a8i0pek5lgq4rqne7q@4ax.com...
> fjab:
> [Timezone]
> >Nu is wel de vraag, waar en hoe stel ik dat bij dat het CEST wordt?
>
> Het beste zou zijn dat de systeembeheerder ervoor zorgt dat de
> TZ environment variabele goed wordt gezet in de environment van
> het Apache/PHP-proces.
>
> --
> René Pijlman
>
> Wat wil jij leren? http://www.leren.nl

Hallo Rene,

Kan je ook aangeven waar ik dat dan doe?

bvhd

Franklin

Rene Pijlman
08/04/03, 19:50
fjab:
>Rene Pijlman:
>> Het beste zou zijn dat de systeembeheerder ervoor zorgt dat de
>> TZ environment variabele goed wordt gezet in de environment van
>> het Apache/PHP-proces.
>
>Kan je ook aangeven waar ik dat dan doe?

Over welke versie /distributie van welke software en OS hebben
we het hier eigenlijk?

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

fjab
09/04/03, 00:05
Rene Pijlman wrote:
> fjab:
>
>>Rene Pijlman:
>>
>>Kan je ook aangeven waar ik dat dan doe?
>
>
> Over welke versie /distributie van welke software en OS hebben
> we het hier eigenlijk?
>

Hallo Rene,

We hebben het over Linux RedHat 8.0, PHP 4.2.2 op Apache 2.0.40.

Groet,

Franklin

Rene Pijlman
09/04/03, 19:05
fjab:
>Rene Pijlman wrote:
[environment variable TZ met timezone voor PHP]
>> fjab:
>>>Kan je ook aangeven waar ik dat dan doe?
>
>We hebben het over Linux RedHat 8.0, PHP 4.2.2 op Apache 2.0.40.

Je zou het in /etc/profile kunnen zetten. Via het startup script
/etc/init.d/apache komt het dan in de environment van het Apache
proces en dus in de environment van PHP. Je moet daarna minimaal
Apache herstarten of rebooten.

Ik gebruik zelf Debian en heb Red Hat alweer een tijdje niet
onder handen gehad. Maar ik vermoed dat het bovenstaande ook
voor Red Hat geldt.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Daniel Tryba
09/04/03, 19:35
Rene Pijlman <reply.in@the.newsgroup> wrote:
>>We hebben het over Linux RedHat 8.0, PHP 4.2.2 op Apache 2.0.40.
>
> Je zou het in /etc/profile kunnen zetten. Via het startup script
> /etc/init.d/apache komt het dan in de environment van het Apache
> proces en dus in de environment van PHP. Je moet daarna minimaal
> Apache herstarten of rebooten.

AFAIK zou dat niet mogen werken, profile dient alleen te worden gelezen
als de shell een interactieve shell is of als --login als optie wordt
meegegeven (bron: man bash /INVOCATION).

Als er toch al in /etc wordt gerotzooid dan is het IMHO beter om de TZ
variabele goed te zetten (en te exporteren) in het script dat apache
opstart.

--

Daniel Tryba

Rene Pijlman
09/04/03, 21:20
Daniel Tryba:
>Rene Pijlman wrote:
>>>We hebben het over Linux RedHat 8.0, PHP 4.2.2 op Apache 2.0.40.
>>
>> Je zou het in /etc/profile kunnen zetten. Via het startup script
>> /etc/init.d/apache komt het dan in de environment van het Apache
>> proces en dus in de environment van PHP. Je moet daarna minimaal
>> Apache herstarten of rebooten.
>
>AFAIK zou dat niet mogen werken, profile dient alleen te worden gelezen
>als de shell een interactieve shell is of als --login als optie wordt
>meegegeven (bron: man bash /INVOCATION).
>
>Als er toch al in /etc wordt gerotzooid dan is het IMHO beter om de TZ
>variabele goed te zetten (en te exporteren) in het script dat apache
>opstart.

Oh ja, dat is waar.

Soms kan Linux (of PHP in dit geval) toch behoorlijk sucken. Wat
is het nu voor onzin om de timezone via een environment variable
van proces naar proces door te geven? Als het goed is geeft
/etc/localtime de timezone aan en dat moet een applicatie toch
via een API aan het systeem vragen. Nee, het wordt tijd dat
Linux een registry krijgt.

;-)

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Daniel Tryba
09/04/03, 22:05
Rene Pijlman <reply.in@the.newsgroup> wrote:
> Soms kan Linux (of PHP in dit geval) toch behoorlijk sucken. Wat
> is het nu voor onzin om de timezone via een environment variable
> van proces naar proces door te geven? Als het goed is geeft
> /etc/localtime de timezone aan en dat moet een applicatie toch
> via een API aan het systeem vragen.

Jamaar de tijd op een fatsoenlijk systeem is altijd in UTC, het is aan
de gebruiker te bepalen hoe hij deze tijd wil hebben gerepresenteerd, de
gebruiker is in dit geval een web-server/applicatie en aangezien
aangezien niet bekent is in welke tijdzone de tijd wordt weergegeven is
het wellicht handig om de enige "vaste" tijd op deze bol weer te geven
-> UTC.

--

Daniel Tryba

Rene Pijlman
09/04/03, 22:20
Daniel Tryba:
>Rene Pijlman:
>> Soms kan Linux (of PHP in dit geval) toch behoorlijk sucken. Wat
>> is het nu voor onzin om de timezone via een environment variable
>> van proces naar proces door te geven? Als het goed is geeft
>> /etc/localtime de timezone aan en dat moet een applicatie toch
>> via een API aan het systeem vragen.
>
>Jamaar de tijd op een fatsoenlijk systeem is altijd in UTC, het is aan
>de gebruiker te bepalen hoe hij deze tijd wil hebben gerepresenteerd, de
>gebruiker is in dit geval een web-server/applicatie en aangezien
>aangezien niet bekent is in welke tijdzone de tijd wordt weergegeven is
>het wellicht handig om de enige "vaste" tijd op deze bol weer te geven
>-> UTC.

Mijn onvrede betreft de manier waarop de tijdzone waarin de
server zich bevindt, zoals door de systeembeheerder bepaald met
/etc/localtime, kennelijk moet worden doorgegeven aan PHP: met
een environment variabele. Niets is onhandiger dan informatie
aan een daemon doorgeven via een environment variabele.

Deze klacht staat los van het belang dat de applicatie al of
niet zou moeten hechten aan de tijdzone waarin de server zich
bevindt.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Daniel Tryba
09/04/03, 23:05
Rene Pijlman <reply.in@the.newsgroup> wrote:
> Mijn onvrede betreft de manier waarop de tijdzone waarin de
> server zich bevindt, zoals door de systeembeheerder bepaald met
> /etc/localtime, kennelijk moet worden doorgegeven aan PHP: met
> een environment variabele.


Jamaar, als ik PHP de tijd laat opvragen, dan kijkt die ook heel mooi in
/etc/localtime. Een stukje uit "strace /tmp/date.php":

time(NULL) = 1049921219
open("/etc/localtime", O_RDONLY) = 3

zodra date wordt aangeroepen. Op mijn systeem is geen TZ env var
gedefineerd. Zodra bv TZ=UTC dan levert een strace op:

time(NULL) = 1049921348
open("/usr/share/zoneinfo/UTC", O_RDONLY) = 3

Er is dus helamaal geen probleem met PHP wat jij beschrijft.

> Niets is onhandiger dan informatie aan een daemon doorgeven via een
> environment variabele.

IMHO is het juist zeer handig, mist het natuurliuk alleen wordt gebruikt
om de systemwide instellingen te overrulen, per gebruiker of per
process. Schijnbaar heeft de OP dus toevallig een systeem getroiffen
waar in het apache opstart script om een of andere reden de default TZ
wordt overschreven, wellicht dat $_SERVER of ($_ENV) zinnige info biedt
om dit te achterhalen!

--

Daniel Tryba

Rene Pijlman
10/04/03, 11:05
Daniel Tryba:
>Jamaar, als ik PHP de tijd laat opvragen, dan kijkt die ook heel
>mooi in /etc/localtime.
[...]
>Er is dus helamaal geen probleem met PHP wat jij beschrijft.

Aargghh, je hebt gelijk. Op mijn server gaat het ook "vanzelf"
goed. Kennelijk heeft het probleem van de OP een andere oorzaak
dan ik dacht.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl