03. februar 2005 - 17:07Der er
3 kommentarer og 1 løsning
Mkdir og uID/gID
Jeg har luret lidt på om andre indlæg her på exp. kunne kaste lys over mit problem, men det fleste ender med "du skal slå safe mode fra" - hvilket ikke burde være nødvendigt/er muligt i dette scenarie.
Sagen er, at jeg har et PHP script kørende på en surftown server (som af gode grunde kører safe mode). Fint nok, jeg kan stadig oprette mapper, skrive filer osv. Blot kan jeg ikke sætte gruppe ID og user ID (den første værdi i chmod kommandoen) på grund af safe mode's begrænsninger.
Nå, men jeg bruger altså mkdir() til at oprette en mappe, og chmod til at sætte den nyoprettede mappe til 0777(read/write/execute for alle). Jeg laver også lige en stat() for at se hvad rettigheder den nye mappe har.
Stat siger at mappen ganske rigtigt har 777 i tildelte rettigheder, userID er 398, medens gruppe ID er 121058 - så jeg kan stadig oprette mapper og filer i den nye folder.
Men her kommer det mærkelige så: hvis jeg opretter en mappe, *inde i den mappe jeg lige oprettede*, så fortæller stat() mig at den nye mappe har userID 398 *og* gruppeID 398, altså kan jeg ikke længere tilgå mappen!
Er dette generelt for PHP når det kører safemode? Jeg kan ikke se at flere niveauer af mapper er mere "skadelige" end en enkelt...?
Ellers så kan det måske have at gøre med surftown's specifikke opsætning af servere, og i så fald burde mit sprgsm. måske flyttes til "Internet:udbydere" :-)
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Umiddelbart kunne man ikke oprette en mappe med din metode, l0vgaard. Brugte du også surftown da du fandt på det der "hack" ?
Men du bragte mig på sporet, og det lykkedes at skabe mappen via FTP...Nærmere bestemt ftp_mkdir(). Der var lidt problemer da ftp_chmod ikke er understøttet af PHP, men så kunne den alternative ftp_site() anvendes...
Her er mit script (eller, en del af det, da det er en "recursive" funktion som ikke er begrænset til at skabe en enkelt mappe ad gangen):
$folder="/sti/til"; $create_folder="/mappen"; $connection = ftp_connect('mydomain.com'); $username = 'user'; $pass = 'pass'; $login_result = ftp_login($connection,$username,$pass); // check to make sure you're connected: if ((!($login_result)) or (!($connection))){ echo "error connecting to FTP"; echo "<br>"; }else{ echo "FTP connection was made"; echo "<br>"; ftp_chdir($connection,$folder); ftp_mkdir($connection,$create_folder); $chmod=ftp_site($connection, "CHMOD 0777 ".$create_folder); } ftp_close($connection);
Håber det vil være brugbart for nogen derude!
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.