[PHP] - Whileschleife geht net??
-
Hi Leute!
Ich weis nicht, aber ich mach glaub irgendwas falsch:
<?php $page_root = $DOCUMENT_ROOT."/testverz/"; $nr = 0; while(file_exists($page_root.'datei'.$nr.'.pdf')) { $nr++; } echo "datei".$nr.".pdf"; ?>
Die Datei "datei0.pdf" existiert bereits! Also sollte das echo dann datei1.pdf ausgeben und wenn datei1.pdf existiert sollte datei2.pdf ausgegeben werden.
Doch der gibt mir IMMER DAS GLEICHE aus, nämlich "datei0.pdf". Warum???
Es ist als würde die Datei nicht existieren!
Habe schon jeglich andere Variantn durchverucht. Das $page_root also der Dateipfad wird mir richtig ausgegeben,der stimmt auch!Die DATEI EXISTIERT auch ---> http://www.swiss-portal.com/testverz/datei0.pdf !!
Aber das Script geht net???
WEnn ich die existierende Datei öffnen will, kommt NO SUCH FILE...
mfg
PRo
-
Hi,
versuchs mal damit...<?php $rootdir = opendir($DOCUMENT_ROOT."/testverz/"); $FileHit = ""; while ($file = readdir($rootdir)) { if (preg_match("/^datei[0-9]{1,}.pdf/i",$file)) { $FileHit .= $file."<br>"; } } closedir($rootdir); echo $FileHit; ?>
Du liest einfach alle Dateien im Verzeichnis aus und prüfst dann
nur noch, welche du davon brauchst und speicherst sie zwischen.Edit:
Ach ja noch zu deinem Quelltext. Wenn eine Datei gefunden wird,
liefert file_exists() true zurück. Wenn also die Datei datei0.pdf
auf deinem Rechner existieren würde, dann hättest du ne Endlosschleife.
-
2oopuls schrieb:
Hi,
Wenn also die Datei datei0.pdf
auf deinem Rechner existieren würde, dann hättest du ne Endlosschleife.Nein, er inkrementiert $nr in der while Schleife, oder?
-
supertux schrieb:
2oopuls schrieb:
Hi,
Wenn also die Datei datei0.pdf
auf deinem Rechner existieren würde, dann hättest du ne Endlosschleife.Nein, er inkrementiert $nr in der while Schleife, oder?
Inkremieren???
Mein Script ist nicht tot. *grins*¨!
implementieren heisst das in der Schweiz aber auch egal.
danke für eure HIlfe, klappt aber trotzdem nicht..naja vergessen wirs
war nebensache THX
-
Programmer schrieb:
Inkremieren???
[...]
implementieren heisst das in der Schweiz aber auch egal.Inkremieren heißt es nicht, aber inkrementieren (hochzählen). Implementieren ist was anderes
Programmer schrieb:
danke für eure HIlfe, klappt aber trotzdem nicht..
naja vergessen wirswar nebensache THX
Wenn du keine Lösung willst, warum hast du dann diesen Thread eröffnet?
Zum Thema: ich denke, dass deine Pfadangabe einfach falsch ist
-
Tipp 1:
Leg Dein STring-Konstrukt in die Schleife und printe es, schlichtes Print-Debugging um zu prüfen, on wirklich der Dateiname erstellt wird den Du suchst...Tipp 2:
Apache-user != File-System-User. Mag ja sein, daß die Dateien im Filesystem vorhanden sind, aber darf ein Web-User via Apache auf Dein Verzeichnis zugreifen ???
-
Stimmt ja, nix endlos aber mit while(true) sollte es gehen
@Porgrammer es wäre aber schön, wenn du noch sagen würdest, warum es nicht
geht (Fehlermeldung etc.). Sonst hätte ich mir die Arbeit mit dem Quelltext
sparen können.
-
Ein ReadDir ich hier nihct so gut nur weil man checken will ob eine Datei existiert. Ein Verz. kann gut mal > 0 Dateien haben. Wielange würde es dauern ein DIR mit 5000 Datein einzulesen ?
Und das bei jedem Aufruf des Scripts.
-
Also. Es ist so.
Habe mal alles durchgetestet. Es ist alles korrekt was sich nur ausgeben lässt und stimmt 100%ig. Wenn ich die URL aufrufe dann geht alles, aber im PHPScript selber nicht.
Fehlermeldungen werden mir keine angezeigt, nur immer datei0 anstat 1 oder 2 etc..
Zugriffsrechte für den ordner wo sich die Dateien befinden = 777 !mfg
ProPS: Kann es auch sein das es daran liegt das register_globars in der php.ini deaktiviert sind?
-
Wie sieht denn die von dir verwendete Pfadangabe aus? Ich bin mir fast 100%ig sicher, dass es daran liegt.
-
flenders schrieb:
Wie sieht denn die von dir verwendete Pfadangabe aus? Ich bin mir fast 100%ig sicher, dass es daran liegt.
Entweder: $DOCUMENT_ROOT."/testverz/"
oder: http://www.swiss-portal.com/testverz/
oder: /testverz/
oder: testverz/
aber keines von allen klappt richtig!
-
Und was steht in $DOCUMENT_ROOT? Falls es leer ist kannst du es mal mit $_SERVER['DOCUMENT_ROOT'] versuchen (hängt dann wohl, wie schon von dir vermutet mit register_globars auf off zusammen)
-
flenders schrieb:
Und was steht in $DOCUMENT_ROOT? Falls es leer ist kannst du es mal mit $_SERVER['DOCUMENT_ROOT'] versuchen (hängt dann wohl, wie schon von dir vermutet mit register_globars auf off zusammen)
joar...
$_SERVER['DOCUMENT_ROOT'] funzt! *g*
Denn mein Serveranbieter will und kann das register_globals net auf on schalten... mfg Pro