Avatar billede encorez Nybegynder
01. juli 2003 - 12:23 Der er 4 kommentarer og
1 løsning

Skriv til fil

Jeg skal skrive til en fil og det gør jeg med følgende kode, som jeg har pillet ud af en andet script:

$pflag = 0;
if (!is_writeable($filepath)) 
    $pflag =1;

if ($pflag ==1)
    @chmod($filepath, 0777);
   
$fp = @fopen($filepath,"w");
@flock($fp,2);
@fwrite($fp,"blabla");
@flock($fp,3);
@fclose($fp);

Problemet er at hvis filens attributter ikke tillader at man skriver til den, så skulle den øverste del af koden gerne ændre filens attributter, så man får lov til det, ved at ændre cmod koden til 777. Men det gør den IKKE. Hvorfor virker det ikke?

En anden ting, hvorfor skal man bruge flock efter man har åbne filen og efter man har skrevet til den?

Simon
Avatar billede webt Nybegynder
01. juli 2003 - 12:47 #1
hvorfor den ik chmod'er hmm ja, du kan prøve at fjerne @ foran chmod og se hvilken fejl besked den smider i hovedet på dig, mht flock, så er det der sker når du bruger flock($fp,2) at filen bliver låst, således andre ik kan skrive til den mens du gør, og flock($fp,3) giver så filen fri igen

http://dk2.php.net/manual/en/function.chmod.php
http://dk2.php.net/manual/en/function.flock.php
Avatar billede encorez Nybegynder
01. juli 2003 - 13:09 #2
Det giver ikke så meget:
chmod(): Operation not permitted in /net/users/a57/878/test/www/ITPAS/function-file.php on line 17

Linie 17 er denne linie:
chmod($filepath, 0777);
Avatar billede encorez Nybegynder
01. juli 2003 - 13:25 #3
det er ikke fordi man skal åbne filen før man kan ændre dens attributter, eller sådan noget
Avatar billede webt Nybegynder
01. juli 2003 - 14:03 #4
det sku jeg ikke mene, filen ligger på samme server som scriptet ik?

måske serveren bare er sat til ik at tillade chmod? dont know
Avatar billede andy Nybegynder
03. juli 2003 - 08:44 #5
Du kan sikkert ikke chmod'e filen via PHP fordi den ikke er ejet af "nobody" eller hvad apache nu kører som.

chown($filepath, "nobody");
chmod($filepath, 0777);

Dette virker højest sandsynligt ikke da chown() ofte er disabled på virtual hosting.

Ellers så prøv at slette den fil du skriver til og kør dit script. Så skulle filen blive oprettet af php med owner "nobody".
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