Avatar billede compac Seniormester
24. maj 2007 - 22:42 Der er 7 kommentarer og
1 løsning

Opret - skriv -læs fil

Jeg har noget kode, hvor jeg vil skrive til en fil, hvis den eksisterer. Hvis den ikke eksisterer skal filen oprettes først, men den kommer med fejlmelding når den opretter filen:

<?php
$filename = 'test.php';
$somecontent  = "Noget indhold";
if (file_exists($filename)) {
$ok="";
}
else
{
$filename = fopen($filename, "a");
}
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w+')) {
        print "Cannot open file ($filename)";
        exit;
    }
if (!fwrite($handle, $somecontent)) {
        print "Cannot write to file ($filename)";
        exit;
    }
    print "Success, wrote ($somecontent) to file ($filename)";

    fclose($handle);
} else {
    print "The file $filename is not writable";
}
?>

Når denne kode køres kommer denne fejl:
The file Resource id #3 is not writable
(teksten i sidste linie)
Avatar billede erikjacobsen Ekspert
24. maj 2007 - 23:03 #1
Du skal ikke sige
$filename = fopen($filename, "a");
Så overskriver du jo filnavnet.  Kan du ikke nøjes med en "a+" og en enkelt fopen ?
Avatar billede compac Seniormester
25. maj 2007 - 09:24 #2
Min kode er nok ikke den mest smarte. Men jeg mener da at jeg må have en "file_exists" med til mit formål?
Mit ønske er netop, at filen skal overskrives, hvis den eksisterer i forvejen - og ellers skal den oprettes.
Hvis jeg opretter en tom fil i notepad fungerer det udmærket, men hvis der ikke er nogen fil kommer fejlen.
Avatar billede erikjacobsen Ekspert
25. maj 2007 - 09:36 #3
http://php.net/fopen - læs om "a+". Du behøver ingen file_exists.
Men fejlen er i første omgang at du ødelægger dit filnavn - ikke noget med om koden er smart eller ej: den er bare forkert på det punkt ;)
Avatar billede showsource Seniormester
25. maj 2007 - 09:41 #4
Du behøver ikke tjekke for om filen findes, og med w åbnes kun til skrivning

<?php

$filename = "filnavn.txt";
$somecontent  = "Noget indhold";

if(false == $handle = fopen($filename, 'w')) {
echo"Kunne ikke åbne filen ". $filename;
exit;
}

if(false == fwrite($handle, $somecontent)) {
    echo"Cannot write to file ". $filename;
    exit;
}

fclose($handle);

readfile($filename);

?>
Avatar billede compac Seniormester
29. maj 2007 - 10:08 #5
God hjælp - læg nogle svar
Avatar billede showsource Seniormester
31. maj 2007 - 12:25 #6
ingen point, ellers tak, og jeg ved erik heller ikke er til point!
Så lav et svar selv.
Avatar billede erikjacobsen Ekspert
31. maj 2007 - 12:28 #7
Nej tak, ingen point til mig.
Avatar billede compac Seniormester
17. juni 2007 - 17:41 #8
ja, men god hjælp
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester