26. juni 2003 - 09:53Der er
15 kommentarer og 2 løsninger
Fejl ved fopen
Hej
Jeg har lavet et lille script der henter/læser en fil på en server via internettet. Problemet er at jeg bruger fopen og denne kode helst skal stå inde i bodyen. Men hvis denne fil er utilgængelig bliver der udskrevet masse af fejlkode på. Fejl: "failed to open stream: HTTP request failed! HTTP/1.1 404 Object Not Found "
Og så skriver kommer der selvfølgelig også fejl på de efterfølgende liniekoder, fordi arbejde videre på det er skulle være blevet hentet.
Og det er jo ikke pænt. Så hvordan undgår man det.
$fp = @fopen( "filnavn.xxx", "r" ); // prøv at åbne filen // @ foran funktionskaldet under trykker en evt fejlmelding
if ( $fp ) { // hvis $fp fik en værdie // det lykkedes at åbne filen, så her skriver du din kode der bruger dataene fra den fil // ... fclose( $fp ); // luk filen igen } else { // det lykkedes ikke at åbne filen. skrive noget andet. echo "Desværre, data fra 'filnavn.xxx' er ikke tilgængelige, men her er et billede af min hund:<br><img src='fido.jpg'>"; } // og efter if sætningen fortsåtter du så med de dele af siden der ikke behøver data fra den fil.
Du kunne evt lade scriptet gemme filen lokalt, så hvis serveren i den anden ende bliver utilgængelig, så kan du indlæse backup'en istedet for. Så slipper du for at lade den anden server give dig nedetid :)
jeg er lige begyndt at arbejde med disse funktioner, så jeg var ikke klar over at @ foran funktionen undertrykkede fejl. Så dem havde jeg fjernet, da jeg ikke så det gjorde nogen forskel. Men nu har jeg sat dem på, og nu kommer der inden fejlmeddellelser, selv om filen stadig er utilgængelig. Så egentlig synes jeg mit problem er løst, med mindre I siger at det så skaber andre problemer?
Og umiddelbart er det nok at sætte @ foran. Jeg kan godt se at hvis jeg havde mere kode der skulle udføres efter jeg havde brugt fopen på fil, så ville det blive nødvendigt med en if(){} eller hvis det nødvendigt med en anden fejlmeddelse
Jeg ville nok kalde det 'pænere' at bruge en if sætning. Så vil if sætningens struktur fortælle hvad det er der bliver udeladt når det ikke lykkes at åbne filen. uden den skal man lede dernedad for at finde ud af det.
PS: er det foreestne ikke to forskellige fopen kald, der hver for sig kan gå galt.
ja, det har du ret i. Jeg bør skrive noget andet tekst i variablen, hvis ikke filen kan åbnes. Erik, du var først med hele if-tingen, læg et svar, så får du pointene. Også tak til jakoba, som sædvanlig gode indlæg
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.