phpbar.de logo

Mailinglisten-Archive

[php] Unterschied Win<->Linux (war: Re: [php] WAMP Installationsprobs...)

[php] Unterschied Win<->Linux (war: Re: [php] WAMP Installationsprobs...)

=?ISO-8859-1?Q?Manuel_Ho=DFfeld?= Lists_(at)_Hossfeld.de
Thu, 15 Jul 1999 17:24:09 +0200


Hallo,

> > Was dann aber bedeutet, das wir außer der Installation wenig zu Windows im
> > Zusammenhang zu PHP schreiben müssten?
> 
> Ja, wuerde ich auch sagen. Die Liste der Unterschiede ist wahrscheinlich
> sehr kurz:
> - Es gibt offenbar bei den Umgebungsvariablen ein paar kleinere
> Unterschiede. 
> - MySql konsumiert speziell unter Windows 95 irgendwann die
> Systemressourcen. Das ist ein known bug, gibt es unter NT nicht. 
> - Es gibt eine Moeglichkeit dne PHP-Interpreter ueber ein bestimmtes
> Verfahren abzuschiessen, aber das moechte ich nicht publizieren, weil
> eine kleine Moeglichkeit existiert, dass moeglicherweise auch
> Unix-Systeme darunter leiden koennten.
> Mehr an Unterschieden habe ich tatsaechlich nie bemerkt.
 
Ich möchte mich an dieser Stelle mal einklinken und noch was zu 
den Unterschieden PHP/Win32 und PHP/Linux sagen, unabhängig 
davon ob das jetzt relevant ist für das Buch oder nicht. (Zu den 
Unterschieden bei MySQL kann ich nix beisteuern, da ich das 
noch nie auf Win32 benutzt habe. Außerdem ist die letzte Version 
von PHP/Win32 die ich benutzt habe ca. 3.0.6, daher alle Angaben 
ohne Gewähr - vielleicht ist einiges schon wieder behoben):
Tatsächlich sind die Unterschiede gering. Ganz auf die leichte 
Schulter nehmen würde ich sie aber nicht.

- Z.B. die erwähnten Umgebungsvariablen (PATH_INFO und 
Kollegen): Da kann man schon ein wenig auf die Nase fallen, wenn 
man das nicht weiß. Konkret ist mir z.B. aufgefallen, daß 
$PHP_SELF unter Win32 ziemlich unbrauchbar ist, da es den 
"Pseudo-CGI-Pfad" (d.h. .../cgi-php/... oder was man halt beim 
Apache eingestellt hat) enthält, und nicht den richtigen. 
Das ist vor allem dann ärgerlich, wenn man Skripte/Bibliotheken 
von anderen benutzt, die sich auf $PHP_SELF verlassen (z.B. im 
Form-Tag, um sich mittels ...ACTION=<? echo $PHP_SELF; ?>... 
selbst aufzurufen). So z.B. der Fall bei der PHPLIB. Bei letzterer 
ist es zum Glück allerdings dokumentiert, daß man dann überall 
$PHP_SELF durch $PATH_INFO austauschen muss.

- Es gab mal ein paar PHP/Win32-Versionen (nachweislich z.B. 
3.0.5), bei denen der Sourceviewer "kaputt" war (d.h. das Syntax-
Highlighting funktionierte nicht richtig). Ich habe das vor längerer 
Zeit auch mal als Bug submitted, dann aber nichts mehr davon 
gehört. Möglicherweise ist das in neueren Versionen gefixt.

- Als ich mal ein paar kleinere Benchmarks mit PHP/Win32 und 
PHP/Linux fahren wollte, bin ich auf einen weiteren nicht so 
offensichtlichen Bug gestossen. Und zwar bei microtime().
Unter Linux liefert diese Funktion den Microsekundenanteil von 
time(), also eine Zahl mit ziemlich vielen Dezimalstellen wie z.B. 
"0.234242345". So ist das wohl vom "Erfinder" auch beabsichtigt. 
Unter Win32 jedoch kommen ganz merkwürdige Werte der Form 
"xxx y.yyyyyy" heraus. Wobei xxx eine Ganzahl (im Bereich ca. 0-
200irgendwas) ist und y.yyyyy wieder eine Gleitkommazahl - 
allerdings NICHT die gleiche wie die o.g. unter Linux! Versucht man 
irgendwie mit diesen Zahlen zu rechnen (d.h. Zeitspannen zu 
messen), kommt meistens nur Müll raus.
Keine Ahnung, ob dieser Bug mittlerweile behoben ist und ob ihn 
überhaupt jemand gemeldet hat (ich habe es damals nicht - aus 
Gründen, die zu erklären hier zu lange dauern würde).

- Man müsste mal eindeutig klären, welche Funktionen nun definitiv 
gar NICHT bei PHP/Win32 dabei sind. Auch wenn ich es selbst nie 
gebraucht habe, fällt mir hier spontan crypt() ein. Hat jemand 
verlässliche Angaben darüber? Das was ich bisher darüber 
gehört/gelesen hatte reichte von "Gibt's unter Win32 generell nicht" 
über "man braucht eine spezielle DLL dafür" bis zu "na klar, ist 
auch bei PHP/Win32 dabei".
Keine Ahnung, ob es noch andere solche "Kandidaten" außer 
crypt() gibt.

- Ein weiteres "Problem" der Win32-Version (oder besser ein 
"Known Issue") hängt damit zusammen, daß sie nur als externes 
CGI erhätlich ist, nicht als Apache-Modul: Die HTTP 
Authentifizierung mit PHP geht daher nicht auf Win32. (Es sei 
denn, man benutzt den Apache/Cygwin Port (aus CAMP, wo PHP 
nämlich auch als Modul einkompiliert ist - wäre vielleicht generell 
mal ein Hinweis wert) statt den "offiziellen" Win32 Port vom 
Apache.)

Also alles in allem... Vielleicht ist die Liste der Unterschiede ja 
doch nicht sooo kurz. (Wobei man zugegebenermassen in der 
Praxis nur selten mit derlei Problemen konfrontiert wird.)

> Apache muss doch konfiguriert werden. In der Windows-version ist nicht
> mal localhost als Domaine eingetragen. Bis man die Eintraege fuer Hosts,
> PHP, Access-Limits usw. raus hat, vergeht die meiste Zeit. Ich weiss
> nicht, wie die Voreinstellungen unter Linux sind, aber ohne
> Vorkenntnisse einen unkonfigurierten Apache lauffaehig zu kriegen,
> dauert garantiert deutlich laenger. Egal unter welchem Betriebssystem. 

Dazu muss ich sagen, daß ich persönlich wesentlich länger 
gebraucht habe, PHP auf Windows mit dem MS IIS (bzw. PWS) 
zum laufen zu bringen als mit Apache. Mit dem richtigen Howto 
erschöpft sich letzteres doch auf das eintragen von 3-4 
zusätzlichen Zeilen in der httpd.conf. Beim IIS hingegen muss man 
sich erstmal durch ein halbes Dutzend Menüs und 
Eigenschaftsdialoge klicken, bis man an der richtigen Stelle ist.
Mal ganz davon abgesehen daß man (eine "nackte" NT-Kiste 
vorausgesetzt) sowieso schon mal ewig beschäftigt ist, bis man 
überhaupt das "Option Pack" runtergeladen und installiert hat. Und 
das widerum braucht dann zwingend den IE4 usw.usf...

Viele Grüße,
Manuel


php::bar PHP Wiki   -   Listenarchive