Avatar billede internet Nybegynder
06. december 2007 - 17:35 Der er 17 kommentarer og
1 løsning

chmod til upload

Hej Eksperter

Jeg har et upload script til min side, der uploader filer til brugernes personlige mappe på serveren.

Hvis en brugeren Test loggeren, ind vil han uploade filer til mappen  Test, hvis mappen ikke eksisterer bliver den oprettet.

Der er bare et problem i forbindelse med oprettelsen, og det er chmod (tilladelser til mappen)

      if (is_dir("tilbud/$bruger")) //Tjek om filen findes
      {
      echo "";
      }
      else
      {
      mkdir("tilbud/$bruger"); //Oprette en mappe i php
      chmod("tilbud/$bruger", 0755);
      }

Jeg får hele tiden en fejl meddelse fra mit script, om at filen ikke kan uploades. Der er ikke fejl i selve scriptet. Det ved jeg, for når jeg manuelt giver fulde rettigheder til filen, så er der ingen problemer med at uploade.

Hvilken type chmod skal mappen have ved oprettelse, for at mit upload script virker?

Emil
Avatar billede hmortensen Nybegynder
06. december 2007 - 17:41 #1
Bliver mappen oprettet?
Du kan prøve med 0777, så er der fuld tilladelse for alle.
Avatar billede internet Nybegynder
06. december 2007 - 18:13 #2
Ja, mappen bliver oprettet, og med 0777, har mappen fulde tilladelser til alle, men upload scriptet virker alligevel ikke, når jeg oploader den til mit webhotel hos surftown.

Når jeg tester det hele på localhost, så virker den helt fint. Det samme gør det, når jeg oprettet mapperne ved hjælp af et filhåndteringsystem som er lavet af surftown eller i et ftp program og giver mappen fulde retttigheder.

Det virker ikke, når jeg opretter mapper ved hjælp af php.

Hvad kan der være galt?
Avatar billede erikjacobsen Ekspert
06. december 2007 - 18:16 #3
Mange opsætninger af PHP/Apache osv kommer med en lidt sjov regel for ejerskab af mapper og filer. På de rigtige opsætninger er ejeren af mapper og filer lavet vha ftp og online værktøjer den samme som hvis man gør det med PHP. På de lidt aparte, er det to forskellige brugere.

Prøv at checke det først (jeg kender intet til surftown).

Hvis det er tilfældet kan man måske "snyde" systemet ved at lave en mellemmappe oprettet af PHP-brugeren.
Avatar billede internet Nybegynder
06. december 2007 - 18:34 #4
Ok. Tak for forklaringen.

Når jeg opretter mapper via FTP eller via surftowns filhåndteringssystem, så står der mit brugernavn ud fra mappen, i deres filsystem.

Når jeg opretter mapper via PHP står httpd som brugernavn.

Så jeg tror at det er tilfældet.

Hvad skal jeg gøre for at snyde systemet?
Har du brug for at se hele koden?
Avatar billede internet Nybegynder
06. december 2007 - 18:38 #5
Du kan se dette skræm-billede af hvordan overstående med brugere ser ud:
http://emilc.eu/Billede%202.png

Mappen Emil er oprettet via PHP.
Avatar billede erikjacobsen Ekspert
06. december 2007 - 18:58 #6
Lav en mappe med ftp, så du har  "tilbud/mappe"
Giv den nye "mappe" en 0777
Opret nye mapper i "tilbud/mappe".

Men jeg garanterer ingenting ;) Prøv.
Avatar billede internet Nybegynder
06. december 2007 - 19:23 #7
Det virkede desværre ikke.

Jeg har skrevet til surftown for at spørge om problemet.
Avatar billede erikjacobsen Ekspert
06. december 2007 - 19:26 #8
Eller også skal du oprette med ftp, og give en 0777 der ... sådan ca...
Avatar billede internet Nybegynder
06. december 2007 - 19:29 #9
Ja, det bliver nok løsningen. Det ville bare være smart hvis det kunne ske automatisk, istedet for at jeg skal oprette mapperne manuelt.
Avatar billede erikjacobsen Ekspert
06. december 2007 - 19:40 #10
Meningen er ikke at du skal oprette dem manuelt. Hvis du en mellemmappe med passende rettigheder og ejerskab, så skulle det være muligt at gøre automatisk. Jeg har desværre ikke et eksempel liggende.
Avatar billede internet Nybegynder
06. december 2007 - 19:49 #11
Jeg har oprettet mappen annoncører, så nu ser koden til oprette mapper sådan ud:

if (is_dir("tilbud/annoncører/$bruger")) //Tjek om filen findes
      {
      echo "";
      }
      else
      {
      mkdir("tilbud/annoncører/$bruger"); //Oprette en mappe i php
      chmod("tilbud/annoncører/$bruger", 0777);
      }


Selve upload scriptet er taget fra denne side:
http://www.reginscorner.dk/index.php/Scripts/Upload_med_PHP
Avatar billede erikjacobsen Ekspert
06. december 2007 - 20:24 #12
Hvem ejer "annoncører" og hvad er dens rettigheder (jeg tør stadig ikke bruge æ,ø og å til navne på ting på en 'puter - men måske virker det...)
Avatar billede internet Nybegynder
06. december 2007 - 20:40 #13
Annoncører har fulde rettigheder, og er oprettet via FTP.

Jeg har ændret navnet til annoncorer, men det virker stadigvæk ikke.
Avatar billede internet Nybegynder
06. december 2007 - 21:22 #14
Jeg har nu løst problemet ved hjælp af:
http://dk2.php.net/ftp

Hvis der er nogle der kan bruge det, kommer koder her:

        if (is_dir("tilbud/annoncorer/$bruger")) //Tjek om filen findes
              {
              echo "";
              }
              else
              {

    $ftp_server = "";  //address of ftp server (leave out ftp://)
    $ftp_user_name = ""; // Username
    $ftp_user_pass = "";  // Password
    $conn_id = ftp_connect($ftp_server);        // set up basic connection
    $dir = $bruger;

    // set up basic connection
    $conn_id = ftp_connect($ftp_server);

    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    // try to create the directory $dir
    ftp_mkdir($conn_id, $dir);
    ftp_site($conn_id,"chmod 0777 $dir");

    // close the connection
    ftp_close($conn_id);

              }
Avatar billede erikjacobsen Ekspert
06. december 2007 - 21:45 #15
Det er en noget langsommelig måde, men den vil virke når opsætning nu er så aparte.

Jeg fik lavet et lille eksempel.

1) via ftp oprettet "mappe1" som rigtig bruger, og sætte den 0777 med ftp
2) via PHP oprette "mappe2" som nobody/httpd bruger, og sætte den 0777 med PHP

Derefter lave mapper og filer i mappe2 med PHP. Muligvis virker det ikke med safemode=on.
Avatar billede internet Nybegynder
06. december 2007 - 22:05 #16
Jeg tror at det var det vi prøve før:
1) virker fint
2) virker ikke, da upload scriptet ikke har ordentlig adgang, desværre.

Men jeg takker mange gange for hjælpen. Uden din hjælp, havde jeg ikke fundet ud af at det var et problem med ejerskab af mapper.

Du må meget gerne smide et svar

Endnu en gang tak for hjælpen.
Avatar billede erikjacobsen Ekspert
06. december 2007 - 22:06 #17
Jeg samler slet ikke på point, tak.
Avatar billede internet Nybegynder
06. december 2007 - 22:20 #18
Ok, så tager jeg dem selv.

Mange tak for hjælpen :-)
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