Avatar billede monkeysee Nybegynder
03. februar 2005 - 17:07 Der 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" :-)
Avatar billede loevgaard Praktikant
03. februar 2005 - 17:16 #1
Har haft noget der lignede dit problem, min løsning blev at bruge mkdir() på den her måde i stedet:
mkdir("ftp://user:pass@123.123.123.123/sti/til/mappe");

Håber det kan hjælpe :)
Avatar billede elskermad.dk Nybegynder
03. februar 2005 - 17:27 #2
mkdir kan chmoede for dig i samme funktion :)

mkdir("mappe",0777);

og er godt klar over det ikke er svaret, men et tip!
Avatar billede monkeysee Nybegynder
03. februar 2005 - 17:33 #3
l0vgaard >> checker lige din teknik, det ser da interessant ud...

elskermad.dk >> tak for tippet!!
Avatar billede monkeysee Nybegynder
03. februar 2005 - 20:57 #4
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!
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