Avatar billede martinbk Nybegynder
25. april 2003 - 12:47 Der er 22 kommentarer og
1 løsning

chmod af directory

kan det lade sig gørre at få php's chmod() function til at chmodde et dir istedet for kun en enkelt fil, og i så fald hvordan?
Avatar billede doodoo Novice
25. april 2003 - 12:49 #1
<?php
chmod ("/somedir/", 755);     
chmod ("/somedir/", "u+rwx,go+rx");
chmod ("/somedir/", 0755); 
?>
sådan ?
Avatar billede martinbk Nybegynder
25. april 2003 - 12:54 #2
doodoo det virker aldrig en fis, har jeg sq prøvet
Avatar billede martinbk Nybegynder
25. april 2003 - 12:56 #3
desuden er det du siger der noget værre vrøvl ref. http://dk.php.net/manual/en/function.chmod.php
man angiver ikke en chmod value som hverken decimaltal eller string, men KUN som oktal tal. så ud af 3 forsøg ramte du en rigtig :)
Avatar billede martinbk Nybegynder
25. april 2003 - 12:59 #4
og så vidt jeg kan læse mig frem til ref. http://dk.php.net/manual/en/function.chmod.php er den almindelige chmod function ikke recursive som jeg gerne vil have, derfor spørger jeg om der er en måde at gørre dette på
Avatar billede erikjacobsen Ekspert
25. april 2003 - 13:02 #5
Du læser selv katalog (underkataloger) igennem med opendir() og readdir()

Men hvorfor ikke bare gøre det på en kommandolinie på din Unix/Linux maskine?
Avatar billede doodoo Novice
25. april 2003 - 13:03 #6
okay... :)
Avatar billede martinbk Nybegynder
25. april 2003 - 13:04 #7
fordi det er lidt bøvet når mit phpscript selv laver dirs via en form
Avatar billede sostack Nybegynder
25. april 2003 - 13:11 #8
Prøv med umask()

//sostack
Avatar billede martinbk Nybegynder
25. april 2003 - 13:12 #9
men kan du give et eks erik jacobsen hvis jeg nu har
/usr/local/www/foo/ med filerne foo1.c foo2.c og foo3.c
hvordan skulle jeg så få samtlige filer chmodded 0777 ?
Avatar billede sostack Nybegynder
25. april 2003 - 13:16 #10
<?
$dir = "/usr/local/www/foo/";
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            chmod ($file, 0755);
        }
    closedir($dh);
    }
}
?>
Avatar billede martinbk Nybegynder
25. april 2003 - 13:19 #11
thx sostack, kigger lige på det er tilbage om 2 min
Avatar billede martinbk Nybegynder
25. april 2003 - 13:29 #12
hmm, umiddelbart virker det ok, men problemet ligger nu lidt i at det jo entlig er dir'et der skal chmoddes så der kan addes nye filer, f.eks:
Warning: imagejpeg: unable to open '/usr/local/www/public_html/photoalbum/albums/nov22/thumb_1.jpg' for writing in /usr/local/www/public_html/photoalbum/functions.php on line 567.
jeg har kigget lidt på umask(), problemet der er at der både bliver uploadet biblioteker via ftp, og filer via min form
Avatar billede sostack Nybegynder
25. april 2003 - 14:23 #13
På min Windoze XP / phpdev423 virker chmod også på mapper:
chmod($dir, 0000); // mappen bliver skrivebveskyttet
chmod($dir, 0777); // alle kan skrive til mappen

//sostack
Avatar billede erikjacobsen Ekspert
25. april 2003 - 14:28 #14
Du kan så

chmod ("/usr/local/www/foo/", 0755);
Avatar billede martinbk Nybegynder
25. april 2003 - 14:35 #15
jeg fik bare en return false, men prøver lige igen 2 sek
Avatar billede martinbk Nybegynder
25. april 2003 - 14:44 #16
jeg får stadig en bunke fejlmeddelser:
Warning: chmod failed: Operation not permitted in /usr/local/www/public_html/photo/inserts.php on line 110

lidt kode:
$decperms = fileperms("/usr/local/www/public_html/photo/albums/"."$_POST[filepath]");
          $octalperms = substr(sprintf("%o",$decperms),2);

          if($octalperms < 777) {
            $dir = "/usr/local/www/public_html/photo/albums/"."$_POST[filepath]";
            chmod ("$dir", 0777);
            }
linie 110 er linien med chmod kommandoen
Avatar billede erikjacobsen Ekspert
25. april 2003 - 14:52 #17
if($octalperms < 0777) {

Hvem ejer de forskellige kataloger? PHP scriptet kører jo ikke som dig, så
du skal måske manuelt lave en 777 på photo-kataloget og/eller albums-ditto
Avatar billede martinbk Nybegynder
25. april 2003 - 14:52 #18
jeg svarer ikke lige de næste par timer, men post endelig et svar hvis i kan se hvad der er galt jeg vender frygteligt tilbage
Avatar billede erikjacobsen Ekspert
25. april 2003 - 14:52 #19
Sorry, mente: det er tilstrækkeligt med:

if($decperms < 0777) {
Avatar billede martinbk Nybegynder
25. april 2003 - 15:01 #20
output af ls -l på mit albums dir:

su-2.05b# ls -l
total 2
drwxr-xr-x  2 MBK  www  512 Apr 25 14:56 aug9
Avatar billede martinbk Nybegynder
26. april 2003 - 03:42 #21
men når gruppen www er ejer af mappen, burde jeg så ikke kunne køre chmod på mit dir?
Avatar billede martinbk Nybegynder
03. maj 2003 - 20:53 #22
ingen der kan fortælle mig hvad php exekveres som ?
Avatar billede martinbk Nybegynder
06. maj 2003 - 18:43 #23
intet brugbart, har stadig samme fejl
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