PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfadangaben miteinander verknüpfen


Stefan123
22.06.2006, 12:51:15
Hallo,

ich habe in einem großen PHP-Script eine Variable drin, wo sich ein Pfad zu einem Ordner verbirgt. Z.B.
$path = "../test/";
Das in dem Verzeichnis, wo der Ordner test enthalten ist auch noch ein Ordner mit dem Namen test2 enthalten ist, möchte ich gerne von Euch wissen, wie der Befehl dafür lautet.
$path = "../test/" "../test2/"; --> klappt ja nicht.
Ich hoffe, dass mir einer von Euch weiterhelfen kann.
Danke.


Gruß Stefan

MatMel
22.06.2006, 13:17:53
Hallo


Du kannst das so machen:

$path1 = "../test/";
$path2 = "../test2/";
//erstmal bei $path2 den anfang weg
$path2 = substr($path2, 3);
// dann aneinander hängen
$path_ges = $path1 . $path2


Mit einem Punkt kannst du grundsätzlich strings verknüpfen.

Gruß,
Matze

Stefan123
23.06.2006, 10:25:12
Hallo,

habe das jetzt so in meinem Script eingefügt. Allerdings erhalt ich jetzt eine Fehlermeldung, die ich nicht ganz verstehe:
Parse error: parse error, unexpected T_VARIABLE in Pfad zur PHP Datei/download.php on line 98
In Zeile 98 steht aber nur das hier: $header = "/file_info/header.htm";
Es ist alles richtig verlinkt, denn der Ordner file_info befindet sich im selben Verzeichnis, wo auch die download.php liegt....


Gruß Stefan

xabbuh
23.06.2006, 11:31:57
Und in der Zeile davor?

Stefan123
23.06.2006, 12:20:43
87 $path1 = "../test/";
88 $path2 = "../test2/";
89 //erstmal bei $path2 den anfang weg
90 $path2 = substr($path2, 3);
91 // dann aneinander hängen
92 $path_ges = $path1 . $path2
93
94 #----------------------------------------------------------------------
95 # Path to Header and Footer files.
96 #----------------------------------------------------------------------
97
98 $header = "/file_info/header.htm";
99 $footer = "/file_info/footer.htm";

Hab hier mal einen Teil vom Quellcode reinkopiert und die Zeilen davorgeschrieben....



Gruß Stefan

xabbuh
23.06.2006, 12:31:08
92 $path_ges = $path1 . $path2
Hier hast du das abschließende Semikolon vergessen.

Stefan123
23.06.2006, 14:08:41
Dann erhalte ich diese Fehlermeldung:

Warning: dir(../test/test2/) [function.dir]: failed to open dir: No such file or directory in /Pfad zum PHP Dokument/download.php on line 443

Fatal error: Call to a member function on a non-object in Pfad zum PHP Dokument/download.php on line 444


441# Read current directory.
442 #------------------------
443 $d = dir($path_ges);
444 while (false !== ($file = $d->read())) {
445 if ($file != "." && $file != "..") {
446
447 # Get all the file attributes.
448 #-----------------------------
$size = filesize("$path_ges$file");
$type = filetype("$path_ges$file");
$ext = strrchr("$path_ges$file",'.');
$modified = stat("$path_ges$file");
$displayname = str_replace (strrchr ($file, "."), "", $file);

# If it is a file (not a directory) and the file extention is in $display_list..
#-------------------------------------------------------------------------------
if (($type == file) && (preg_match ("/$ext/i", $display_list))) {

# Format the Dispayed filename.. replace underscore with a space
# and Change each word to start with an upper case letter.
#---------------------------------------------------------------
$displayname = str_replace("_"," ",$displayname);
$displayname = strtolower($displayname);
$displayname = ucwords($displayname);
$filedate = date("d.m.y",$modified[9]);

xabbuh
23.06.2006, 15:11:10
Dann erhalte ich diese Fehlermeldung:

Warning: dir(../test/test2/) [function.dir]: failed to open dir: No such file or directory in /Pfad zum PHP Dokument/download.php on line 443
Dann ist die Pfadangabe falsch.

Stefan123
23.06.2006, 17:10:21
Die Pfadangabe kann nicht falsch sein.
Wenn ich $path1 und $path2 weglasse und nur $path mache mit nur einer Pfadangabe zu einem Ordner geht das alles einwandfrei. Sobald ich aber mehrere Pfade angebe, bekomme ich diese Fehlermeldung...


Gruß Stefan

The One
23.06.2006, 17:15:21
gib mal $displayname per echo aus und schau was drinnen steht.

Stefan123
23.06.2006, 17:24:39
Da wird mir nix angezeigt. Es wird lediglich nur die Fehlermeldung ausgegeben...
Das Komische ist auch, dass die beiden Ordner direkt hintereinander stehen: ../test/test2/
Das Verzeichnis gibt es ja auch nicht.
test bzw. test2 sind in dem Verzeichnis Neu untergebracht, und die PHP-Datei eins drunter.


Gruß Stefan

xabbuh
23.06.2006, 17:46:25
Das Komische ist auch, dass die beiden Ordner direkt hintereinander stehen: ../test/test2/
Das Verzeichnis gibt es ja auch nicht.
test bzw. test2 sind in dem Verzeichnis Neu untergebracht, und die PHP-Datei eins drunter.
Warum willst du die Verzeichnisse test und test2 dann überhaupt miteinander kombinieren, wenn die sich auf der gleichen Ebene befinden?

Stefan123
23.06.2006, 19:07:56
Weil sich in den Ordnern test und test2 unterschiedliche Dateien befinden, die per PHP-Script dort von einem anderen Server aus dort hineinkopiert werden.
Ich habe ein Ausgabescript, welches den Pfad zu diesen Ordnern benötigt und die Files dann auf der Homepage anzeigt, wo man diese auch sofort downloaden kann, ohne dass man den Pfad zu diesen Ordnern sieht.
Es war erst immer ein Ordner vorhanden, da lief das Script ohne Probleme. Nur als der Ordner test2 hinzukam, habe ich leider nicht gewusst, wie man dem Script hinter der Variablen $path klarmacht, dass nicht nur im Ordner test nachgeschaut werden soll, sondern auch im Ordner test2.
Und da wollte ich hier mal nachhören, ob mir einer weiterhelfen kann.


Gruß Stefan

xabbuh
23.06.2006, 20:36:00
Nur als der Ordner test2 hinzukam, habe ich leider nicht gewusst, wie man dem Script hinter der Variablen $path klarmacht, dass nicht nur im Ordner test nachgeschaut werden soll, sondern auch im Ordner test2.
Dann wirst du dein Script so umschreiben müssen, dass $path ein Array sein darf und jedes Element dieses Arrays ein Verzeichnis repräsentiert, in dem gesucht wird.

Stefan123
25.06.2006, 14:49:17
Dann wirst du dein Script so umschreiben müssen, dass $path ein Array sein darf und jedes Element dieses Arrays ein Verzeichnis repräsentiert, in dem gesucht wird.


Hmmm und wie erstelle ich so ein Array?



Gruß Stefan

Andes
25.06.2006, 21:00:34
Dies wäre eine Möglichkeit.$path_ges[0] = "../test/";
$path_ges[1] = "../test2/";

foreach($path_ges as $verz)
{
$d = dir($verz);
//Dein Script
}

Stefan123
26.06.2006, 11:16:15
Hallo Andes,

auch mit dieser Änderung greift das Script wieder nur auf das erste Verzeichnis zu und lässt das zweite völlig unberührt...


Gruß Stefan

Andes
26.06.2006, 13:47:04
Also, das wundert mich jetzt aber. Kann es sein das deine Pfad-Angaben nicht stimmen?

Ordnerstrucktur

./ (root)
./download.php
./test
./test/datei1.php
./test/datei2.php
./test2
./test2/datei3.php
./test2/datei4.php

Verzeichnis und ausführbare Datei (download.php) liegen in demselben Verzeichnis.
In jedem Verzeichnis (test und test2) sind je zwei Dateien enthalten.

Abfrage
$path_ges[0] = "test";
$path_ges[1] = "test2";

foreach($path_ges as $verz)
{
$d = dir($verz);
print $verz."<br>";
while (false !== ($file = $d->read()))
{
if ($file != "." && $file != "..") {
print $file."<br>";
}
}
}


So sieht dann die Ausgabe des Scripts aus.

Ausgabe

test
datei1.php
datei2.php
test2
datei3.php
datei4.php

Stefan123
26.06.2006, 14:35:44
Soll ich Dir das Script mal per Mail zukommen lassen, damit Du Dir einen besseren Überblick verschaffen kannst??
ICh kann es hier leider nicht posten, das es zu groß ist..



Gruß Stefan