Pfad-Auflösung & Konfiguration
Paul Brunner
- php
Guten Abend,
ich habe ein Problem mit dem auflösen von Adressangaben bei einer lokalen Installation von WinNT/Apache1.3.12/php4x.
Seit dem Wechsel von php4.0.6 auf php4.1.2 werden die Pfadangaben anderes aufgelöst. Eine Angabe wie "test/index.php" sollte eigentlich eine absolute Pfadangabe von "http://localhost/test/index.php" haben. Statt dessen liefert realpath() "c:/daten/www/testindex.php".
Das entspricht zwar der tatsächlichen Position der Datei auf meiner Festplatte, wird aber z.B. von file_exits() nicht erkannt.
Ein Vergleich der alten und neuen php.ini hat nichts gebracht. Kennt jemand dieses Problem und vielleicht sogar die Lösung?
Gruß
Paul
Hallo Schmuddelkind, ;)
Habe ich eben gar nicht gesehen, das Du hier 'ne Frage gepostet hast.
Werde mal sehen ob ich was tun kann,
ich habe ein Problem mit dem auflösen von Adressangaben bei einer lokalen Installation von WinNT/Apache1.3.12/php4x.
Seit dem Wechsel von php4.0.6 auf php4.1.2 werden die Pfadangaben anderes aufgelöst. Eine Angabe wie "test/index.php" sollte eigentlich eine absolute Pfadangabe von "http://localhost/test/index.php" haben. Statt dessen liefert realpath() "c:/daten/www/testindex.php".
Verwirrt mich jetzt ein wenig, denn mit realpath() fragt man auch das lokale Dateisystem ab, Du müßtest dann aber "c:\daten\www\testindex.php" als Rückgabe bekommen, da Du auf WinNT arbeitest, und das OS nun mal mit Backslashes arbeitet.
Das entspricht zwar der tatsächlichen Position der Datei auf meiner Festplatte, wird aber z.B. von file_exits() nicht erkannt.
file_exits() = file_exi s ts(), (aber das wirst Du im Script wohl richtig geschrieben haben, denk ich)
Trotzdem gibst Du einem nicht viel Möglichkeiten, ein bischen mehr Quellcode wäre schon besser ...
Es gibt da noch eine Sache, die betrifft aber soweit ich weiß nur die Funktion dirname(). Dort ist im Sprung von PHP 4.0x auf 4.1x eine Änderung in PHP eingeführt worden, die einen eigentlichen Bug dieser Funktion an die sich aber schon alle gewöhnt hatten, korrigiert hat.
So laufen nun alle 'alten Scripte' Gefahr, das Sie auf einem Server mit 4.1x PHP (durch ServerUpdate z.B.) nicht mehr lauffähig sind.
Näheres dazu, inkl. einer kleinen Funktion oder Klasse, die man in diese Scripte einbinden kann damit sie ohne weitere Bearbeitung wieder lauffähig sind gibt's hier:
http://phpclasses.htmlservice.de/browse.html/package/404.html
Name: Fixed functions broken before PHP 4.1.0
Author: Manuel Lemos mlemos@acm.orgDescription:
Between versions 4.0.0 and 4.1.0 some PHP functions had its behaviour
broken by PHP developers.Bug reports on the broken behaviour were made. Despite the broken
functions in question behaved like they did since they were introduced
about 4 years ago, PHP developers that changed the behaviour considered
the bug reports as bogus and did not want provide any means of backwards
compatibility that would make the functions behave as they always did.This means that PHP programs that rely on the original behaviour of the
broken functions will also be broken starting from PHP version 4.1.0. If
you have PHP programs rely on these functions, either you need to fix your
program eventually banning the use of the broken functions or simply not
upgrade to PHP version 4.1.0 or later.This class and some wrapper functions are intended to provide original
behaviour of functions that were broken.So far only two functions were found to be broken: dirname (broken before
PHP 4.0.3) and strtok (broken after PHP 4.0.6). If you know any other
functions that were broken and PHP developers do not want to fix it,
please let me know so we can provide an emulation that provides the
original behaviour to help people that are not aware or do not know how to
implement the original behaviour.URL: http://phpclasses.htmlservice.de/browse.html/package/404.html
Ich glaube zwar nicht das das Dein Problem ist, aber das zu wissen schadet nicht.
Noch mal schmuddelige Grüße, ;)
Horst
Hallo Horst,
Danke für die Anregungen. Aber obwohl das Problem wohl Windows-spezifisch ist und etwas tiefer sitzt (nicht nur konfigurationsbedingt) ist es noch nicht in die Bug-Liste vorgedrungen.
Der Code selbst läuft auf dem online-System (Linux/Apache1.3.12/php4.1.2) ohne Probleme. Die Crux ist unter Windows ein offline-Test-System zu konfigurieren, das sich halbwegs identisch verhält.
-php4.0.6 verwendet einen anderen xslt-Prozessor
-php4.1.2 lief garnicht
-php4.2.1 und 4.2.0 zeigt die erwähnten Fehler mit file_exists
Jetzt geht ich los und hol mir php4.1.0, gut das es so viele Versionen gibt ;-)
Gruß
Schmuddel-Paule
Gruß
Schmuddel-Paule
Hallo Paul, :)
Der Code selbst läuft auf dem online-System (Linux/Apache1.3.12/php4.1.2) ohne Probleme. Die Crux ist unter Windows ein offline-Test-System zu konfigurieren, das sich halbwegs identisch verhält.
Na, das ist ja sowieso ein unmögliches unterfangen (oder man betrachtet 'halbwegs identisch' sehr tolerant)
Das klingt so, als ob Du öfter damit arbeiten mußt. Evtl. wäre es besser, irgend eine 'alte Kiste' mit Linux und der gleichen Konfiguration wie Du's online nutzen mußt/willst ins Netz zu hängen, dann hättest Du jetzt schon 'ne Menge Zeit gespart.
Nein, ich beneide dich wirklich nicht im Moment.
ich habe eben mal nachgeschaut was ich denn hier auf Windows habe, und das ist echt 'n Ding. Mit dem Apache läuft halt 4.0.6, aber auf einem anderen Rechner wollte ich vor 3-4 Monaten unbedingt eine neuere Version aufspielen, um die hochgepriesenen erweiterten Kommandozeilenfunktionen (auch unter Windows) nutzen zu können. Ich hatte das schon verdrängt. Damals hatte ich in ziemlichem Zeitdruck die 4.2.0 Version installieren wollen. Das hat aber überhauppt nicht geklappt. Letzendlich habe ich dann 4.1.1 installiert, und die läuft jetzt noch immer hier.
-php4.0.6 verwendet einen anderen xslt-Prozessor
-php4.1.2 lief garnicht
-php4.2.1 und 4.2.0 zeigt die erwähnten Fehler mit file_exists
Jetzt geht ich los und hol mir php4.1.0, gut das es so viele Versionen gibt ;-)
Ich wünsche Dir viel Glück und schnellen Erfolg ;-)
Horst
[PS: Ich habe keine Ahnung was ein xslt-Prozessor ist oder macht ;) ]