Problem mit fopen
mika
- php
Hallo Zusammen,
ich möchte ein html-File mit fopen öffnen.
Die Pfadangabe+Dateiname wird ermittelt und in der Variablen $htmlfile gespeichert.
in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html
wenn ich versuche die Datei mit fopen zu öffnen:
$fp = fopen($htmlfile, 'r');
erhalte ich folgenden Fehler von PHP:
Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26
wenn ich das fopen folgendermaßen schreibe funktioniert es:
$fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');
ich möchte die zu öffnende Datei aber variabel halten.
was habe ich falsch gemacht??
viele Grüße
Mika
Hi,
in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html
"Sowas wie", oder *genau* *das*?
wenn ich versuche die Datei mit fopen zu öffnen:
$fp = fopen($htmlfile, 'r');erhalte ich folgenden Fehler von PHP:
Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26
Und vorher, vom fopen selber, erhaeltst du keine Fehlermeldung?
wenn ich das fopen folgendermaßen schreibe funktioniert es:
$fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');
Dann wird die Pfadangabe in der Variablen wohl nicht stimmen.
Hast du die wirklich *genauestens* ueberprueft?
MfG ChrisB
Hi,
in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html
"Sowas wie", oder *genau* *das*?
genau sowas
wenn ich versuche die Datei mit fopen zu öffnen:
$fp = fopen($htmlfile, 'r');erhalte ich folgenden Fehler von PHP:
Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26
Und vorher, vom fopen selber, erhaeltst du keine Fehlermeldung?
nein von fopen erhalte ich keine fehlermeldung
wenn ich das fopen folgendermaßen schreibe funktioniert es:
$fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');Dann wird die Pfadangabe in der Variablen wohl nicht stimmen.
Hast du die wirklich *genauestens* ueberprueft?
»»
ja ich habe mir den inhalt der variablen $htmlfile am bildschirm ausgeben lassen, den text kopiert und in mein fopen eingefügt und es hat funktioniert. also ist die pfadangabe definitiv richtig
Hi,
ja ich habe mir den inhalt der variablen $htmlfile am bildschirm ausgeben lassen, den text kopiert und in mein fopen eingefügt und es hat funktioniert. also ist die pfadangabe definitiv richtig
Na dann - zeig mal etwas mehr Code ...
MfG ChrisB
Na dann - zeig mal etwas mehr Code ...
function getImages($filepath) {
//index.html suchen
$fp = opendir($filepath);
while($file = readdir($fp)){
//ist $file ein Verzeichnis?
if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
$this->getImages("$filepath/$file");
}
//$file ist eine Datei
else{
if($file == "index.html") {
$htmlfile = "$filepath/$file";
}
}
}
closedir($fp);
//Pfad und Dateiname der Bilder aus index.html ermitteln
$fp = fopen($htmlfile, 'r');
$string = fread($fp, filesize($htmlfile));
fclose($fp);
}
Hallo,
function getImages($filepath) {
# bitte immer Initialisieren!
$htmlfile=false;
//index.html suchen
$fp = opendir($filepath);
while(($file = readdir($fp)) !== false){ # Dateiname "Null"
if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
$this->getImages("$filepath/$file");
}
//$file ist eine Datei <- das ist ein Trugschluß; daher:
elseif(is_file("$filepath/$file"){
if($file == "index.html") {
$htmlfile = "$filepath/$file";
}
}
}
closedir($fp);//Pfad und Dateiname der Bilder aus index.html ermitteln
# HIER DIE FEHLERQUELLE:
if($htmlfile){
$fp = fopen($htmlfile, 'r');
$string = fread($fp, filesize($htmlfile));
fclose($fp);
}
}
der Denkfehler lag darin, bedingungslos $htmlfile auszulesen. Ist in einem Verzeichnis die Datei "index.html" nicht vorhanden, ist $htmlfile "$filepath/" (Kein Inhalt als Dateiname). Das ist natürlich keine gültige Resource für fopen().
Gruß aus Berlin!
eddi
Hello,
while(($file = readdir($fp)) !== false){ # Dateiname "Null"
Ist nicht Dateiname '0' der Schlingel, und nicht der String 'Null'?
if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
$this->getImages("$filepath/$file");
}
//$file ist eine Datei <- das ist ein Trugschluß; daher:
elseif(is_file("$filepath/$file"){
if($file == "index.html") {
$htmlfile = "$filepath/$file";
Wie war das doch gleich mit is_dir()?
Ist das nicht auch true, wenn ein Link auf ein Directory zeigt?
So könnte dann wieder ein zirkulärer Verlauf entstehen, wenn im Verzeichnis ein Link auf eine höhere Verzeichnisebene vorhanden ist.
Ich habe es aber jetzt nicht ausprobiert und auch nicht in php.net nachgelsen. Komme mal wieder nicht ran an die Seite.
Ein harzliches Glückauf
Tom vom Berg