Mailinglisten-Archive |
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