15. juli 2003 - 16:01Der er
20 kommentarer og 1 løsning
fil-attributter
en bruger skal kunne oprette en fil. Derefter skal brugeren vha. nogle funktioner kunne skrive forskellige ting til denne fil. Problemet er at når filen bliver lavet kan jeg ikke cmod kode højere end 644. Så jeg kan ikke få adgang til den efter den er lavet. Jeg bruger følgende kode:
$pflag = 0;
$fp = @fopen($filepath,"w"); if (!is_writeable($filepath)) $pflag =1; if ($pflag ==1){ @chmod($filepath, 0777); } @flock($fp,2); Her efter begynder jeg at skrive til filen.
Som I kan se forsøger jeg at ændre filens attributter til 777, men det kan jeg ikke få til at lykkes.
Jeg får følgende fejl når jeg bagefter forsøger at få adgang til filen: -main(): SAFE MODE Restriction in effect. The script whose uid is 15001 is not allowed to access blabla.php owned by uid 57878 -failed to open stream: Permission denied
Jeg har læst et sted om at der er problemer med dette, men jeg håber nogen kan give mig en løsning på det. Hvis man ikke kan få adgang til de filer man laver, så mener jeg nærmest det er nytteløst at lave filerne!!
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Altså.. en umask er en slags indstilling der gør at man f.eks. IKKE kan chmod'e til 777. Hvis ens umask er sat til f.eks. 022 (altså umask(022);) så kan man højest chmod'e filer og biblioteker til 755. Meget groft sagt kan man sige at man trækker umask'en fra, selvom det ikke helt passer i praksis. Når en umask er sat, virker den på ALLE filer og mapper der bliver chmod'ed og derfor skal den ikke have nogen 'direkte' kontakt med filen/mappen.
jeg forstår det ikke, jeg kan ændre attributterne til 777 nu uden at brugeumask. Eller er det fordi, det virker hele tiden, når først den er blevet brugt én gang?
Har du prøvet at slette filen og lade scriptet lave filen selv igen? PHP er en bitch når man roder med filsystem funktionerne når der er safe_mode på. Tro mig, jeg kender det. Jeg har selv lavet en filmanager. :/ http://phpfm.zalon.dk/
Altså, hvis du kører scriptet på en *nix server, skal du lige vide at chmod KUN virker hvis man er root. Problemet er at Apache normalt kører som 'nobody'.
Du kan prøve følgende script jeg lige har bikset sammen (ikke testet selvfølgelig :) )
<?php
$fp = fopen("./fil.txt", "w+"); fclose($fp);
$fp = fopen("./fil.txt", "wb"); fwrite($fp, "Dette er en test\nTest!"); fclose($fp);
umiddelbart virker det ikke. Du glemte vel at jeg skal bruge cmod et sted i det script. Ellers bliver rettighederne sat til 644. Jeg har prøvet at sætte cmod ind mellem de første 2 linie i dit script
Hmm, mærkeligt. Det virker fint her. Den laver filen osv., men permissions bliver selvfølgelig ikke sat til 777. Er det vigtigt den bliver sat til 777? Umidelbart er der ingen måde at chmod'e en fil til 777 hvis man ikke er root når safe_mode er slået til i PHP.
når du siger det virker fint, vil det så sige at du også kan få adgang til den, f.eks. via internettet? Jeg har ikke noget problem med cmod'e den til 777, men det er først blevet muligt efter jeg har brugt umask
jeg har nu kigget lidt på det og det ser ud til at jeg faktisk ikke får de fejlmeddelser fordi jeg ikke kan få adgang til filen. Jeg får dem, fordi jeg i starten af filen includeer nogle filer fra et andet bibliotek. De filer er ikke blevet oprettet af scriptet.
Har du nogen ide om hvorfor den nye fil ikke vil tillade at en fil fra et andet bibliotek bliver included?
Jeg tror den fejl fortæller at det netop har noget at gøre med hvem der er "owner" på de enkelte filer: SAFE MODE Restriction in effect. The script whose uid is 15001 is not allowed to access ./function/db-connect.php owned by uid 57878
raz0 -> hvis du har lyst til en udfordring, så prøv at oprette en fil (selv) f.eks. via ftp. Så prøv at skriv en indclude-linie ind i den fil du opretter via scriptet og så se om den vil include det der kommer fra den fil du selv oprettet.
Synes godt om
Ny brugerNybegynder
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.