Avatar billede monkeysee Nybegynder
06. oktober 2005 - 18:48 Der er 6 kommentarer og
1 løsning

mkdir() og safemode

Det er egentlig meget ligetil hvad jeg prøver at opnå, nemlig en funktion som skal oprette en mappe på serveren v.h.a. mkdir().
Første gang jeg kalder scriptet, opretter jeg f.eks en mappe ved navn "test". Fint nok. Men hvis jeg så forsøger efterfølgende at oprette mappen "/test/test2" så fejler scriptet med henvisning til en safemode begrænsning hvor den første mappes ejer (nobody) ikke passer sammen med scriptet's eget id (som lige pludselig er 503 a.k.a. "ftpdata").

Hvordan søren kan det være at PHP på den måde kan skifte identitet?

Og jeg er godt klar over at der kan være andre problemer med safemode (som f.eks at man ikke altid er sikker på at kunne slette de mapper man har oprettet o.s.v), men det er ikke lige det jeg sigter mod med mit spørgsmål her...

/danoise
Avatar billede larsen Nybegynder
06. oktober 2005 - 18:59 #1
bruger du mkdir("Dirnavn",0777) ? Så burde den give dig den nødvendige tilladelse
Avatar billede larsen Nybegynder
06. oktober 2005 - 19:03 #2
Ellers prøv at sætte chmod lige efter mkdir.
mkdir("/sti/til/dir");
chmod("/sti/til/dir", 0755);
Avatar billede Slettet bruger
06. oktober 2005 - 21:02 #3
din første, larsen, vil virke.
Avatar billede kokoko Nybegynder
06. oktober 2005 - 21:25 #4
Havde samme problem. Løste det ved at oprette mapperne via ftp.

Hvis du har adgang til ftp funktionerne i PHP findes et eksempel her:

http://dk.php.net/manual/en/function.mkdir.php

Ellers kan du lave en ftp klient via sockets. (Eller finde noget open source på nettet)

Ved at benytte ftp kan du også slette mapper, oprette filer og alle de andre ting du ønsker.
Avatar billede monkeysee Nybegynder
07. oktober 2005 - 12:35 #5
>Kokoko: desværre er det en shared server kompileret uden --enable-ftp, så det er ikke en option :-(

Men ja, jeg bruger chmod 0777 og resultet er en mappe ejet af "nobody" (apache). Og det er også meningen, derfor er det besynderligt at næste gang scriptet kaldes, er scriptet "ftpdata"
Avatar billede kokoko Nybegynder
07. oktober 2005 - 14:13 #6
Som jeg skrev havde jeg samme problem, men kunne bruge sockets til at lave mine egen ftp klient.

Jeg fandt en tutorial her:

http://www.raditha.com/php/ftp/

Der er nogen eksempel kode som giver dig grundlæggende funktionalitet i en ftp klient. Jeg lavede så følgende metode som benytter FTP klassen til at oprette et dir:

function ftpMkdir($path, $newDir) {
  global $username, $password, $hostname;

  require_once("ftp.php");

  $ftp = new FTP($hostname);
  $sock = $ftp->connect();
 
  if($sock)
    {
      if($ftp->is_ok()==1)
        {
          if($ftp->login($username,$password))
            {
              if($ftp->cwd($path))
                {
                  if($ftp->mkd($newDir))
                    { 
                      return true;
//                      if($ftp->sock_write("CHMOD 777 $newDir"))
//                        {
//                        }
//                      else
//                        echo 'Could not CHMOD new dir';
                    }
                  else
                    echo 'Could not create new dir';
                }
              else
                echo 'Could not change dir to '.$path;
            }
          else
            {
              echo 'The server returned an unrecognized response.';
            }
        }
      else
        {
          echo 'Could not connect to the host that you specified.';
        }
    }
}

Det virkede for mig, så måske det også er en løsning for dig.
Avatar billede monkeysee Nybegynder
07. oktober 2005 - 20:38 #7
> Kokoko : dit svar er accepteret! Jeg fik en dir_list op at køre ved at cut'n'paste kode fra raditha.com, *ret sejt*. Nu skal jeg så godt nok til at modificere al min kode, men who cares, så længe det virker...:-)
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