[PHP] mkdir() probleempje

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jochem81
  • Registratie: Maart 2006
  • Laatst online: 08-05 14:33
Ik ben bezig met het maken van een php scriptje waarmee een nieuw album voor simpleviewer aangemaakt kan worden.
Ik maak hiervoor enkele directories aan (mbv mkdir()) en kopieer hier vervolgens enkele bestanden in. Ik heb de dirs aangemaakt als 777, dus ik zou alle rechten moeten hebben, maar het probleem is dat ik mbv m'n FTP programma de dirs niet meer kan verwijderen of wijzigen.
Hoe kan ik dit aanpassen? En hoe kan ik dirs aanmaken die ik zelf later nog kan verwijderen of aanpassen?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

En de rechten op de bovenliggende directory staan ook goed? D.w.z. je ftp account heeft schrijfrechten in de directory waar PHP de directories in aanmaakt? Alleen dan kan je namelijk die aangemaakt directories weer verwijdert.

Een beetje unix/linux tutorial over het filesysteem geeft je wat meer informatie over het hoe en waarom dit zo werk. :) Heb je zoiets al eens bekeken?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • jochem81
  • Registratie: Maart 2006
  • Laatst online: 08-05 14:33
De rechten van bovenliggende dirs zijn wel goed, aangemaakte dirs mbv FTP kan ik wel aanpassen, maar degenen die door mkdir() zijn gemaakt kan ik niks mee doen.
Ik weet wel wat van het filesysteem, maar waar zou ik meer kunnen vinden?

Acties:
  • 0 Henk 'm!

Verwijderd

jochem81 schreef op vrijdag 07 juli 2006 @ 15:36:
De rechten van bovenliggende dirs zijn wel goed, aangemaakte dirs mbv FTP kan ik wel aanpassen, maar degenen die door mkdir() zijn gemaakt kan ik niks mee doen.
Ik weet wel wat van het filesysteem, maar waar zou ik meer kunnen vinden?
FTP heeft blijkbaar een andere gebruiker dan php. Je zal ervoor moeten zorgen dat de FTP permissie heeft om dingen van de FTP gebruiker te verwijderen.

Edit: Volgens mij praat ik onzin... een 777 dir zou compleet toegankelijk moeten zijn voor iedereen.

[ Voor 10% gewijzigd door Verwijderd op 07-07-2006 15:42 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Wat ook nog kan is dat je geen dirs mag weghalen waar je geen owner van bent. Dit zou een instelling in je FTP client kunnen zijn. Controleer aub de rechten van alle files + dirs en de instellingen van je FTP server goed. Zeer waarschijnlijk zit daar namelijk het probleem en heb je helemaal geen probleem met je code ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Heeft waarschijlijk met je unmask te maken. Zet de volgende code boven mkdir();

PHP:
1
2
3
4
<?php
$old_umask = umask(0);
umask($old_umask);
?>


Dan krijgt je dir een andere chmod, want waarschijnlijk is die geen 777 zoals je met mkdir(); aangegeven hebt.

[ Voor 3% gewijzigd door KappuhH op 07-07-2006 22:38 ]


Acties:
  • 0 Henk 'm!

  • jochem81
  • Registratie: Maart 2006
  • Laatst online: 08-05 14:33
KappuhH schreef op vrijdag 07 juli 2006 @ 22:38:
Heeft waarschijlijk met je unmask te maken. Zet de volgende code boven mkdir();

PHP:
1
2
3
4
<?php
$old_umask = umask(0);
umask($old_umask);
?>


Dan krijgt je dir een andere chmod, want waarschijnlijk is die geen 777 zoals je met mkdir(); aangegeven hebt.
Dit was hem idd!! Thnx

Wel vreemd dat de mkdir() er toch geen 777 aan gaf

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Als je wilt weten hoe dat precies ziet moet je even de reacties hierop lezen: http://nl2.php.net/umask

Acties:
  • 0 Henk 'm!

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
Mooi dat het werkt! Alleen zou ik nog een ding willen opmerken. Als je in de PHP manual kijkt zie je dat er nog een note bij de umask-functie staat:
[...] When PHP is being used as a server module, the umask is restored when each request is finished. [...]

Note: Avoid using this function in multithreaded webservers. It is better to change the file permissions with chmod() after creating the file. Using umask() can lead to unexpected behavior of concurrently running scripts and the webserver itself because they all use the same umask.
Aangezien veel webservers multithreaded zijn en als je PHP als server module gebruikt staan nu je rechten de hele tijd heen en weer te knipperen. Misschien is het dus handig even naar de chmod-functie te kijken.

Overigens lijkt het mij ook handig om te doen als je PHP niet als server module gebruikt, omdat je misschien je site ooit wilt verhuizen. Dan voorkom je nu alvast dat je dan geen wazige errors krijgt. :)

Acties:
  • 0 Henk 'm!

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Mac_Cain13 schreef op zaterdag 08 juli 2006 @ 11:27:
Mooi dat het werkt! Alleen zou ik nog een ding willen opmerken. Als je in de PHP manual kijkt zie je dat er nog een note bij de umask-functie staat:

[...]

Aangezien veel webservers multithreaded zijn en als je PHP als server module gebruikt staan nu je rechten de hele tijd heen en weer te knipperen. Misschien is het dus handig even naar de chmod-functie te kijken.

Overigens lijkt het mij ook handig om te doen als je PHP niet als server module gebruikt, omdat je misschien je site ooit wilt verhuizen. Dan voorkom je nu alvast dat je dan geen wazige errors krijgt. :)
Om 777 aan een map te geven zou jij het als volgt doen:
PHP:
1
2
3
4
5
<?php
$mapname = "blaat"
mkdir($mapname);
chmod($mapname, 0777);
?>

???

[ Voor 4% gewijzigd door KappuhH op 08-07-2006 14:00 ]


Acties:
  • 0 Henk 'm!

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
KappuhH schreef op zaterdag 08 juli 2006 @ 13:59:
[...]

Om 777 aan een map te geven zou jij het als volgt doen:
PHP:
1
2
3
4
5
<?php
$mapname = "blaat"
mkdir($mapname);
chmod($mapname, 0777);
?>

???
Aangenomen dat "blaat" een valide mapnaam is enzo lijkt me jou stukje voorbeeld code een prima stukje PHP. De nul voor de 777 is inderdaad ook verplicht om het een octaal getal te maken. Zoals ook in de manual staat.

Vanwaar die vraag?

Acties:
  • 0 Henk 'm!

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 17-06 07:31

Swaptor

Java Apprentice

Ik denk om te verifiëren dat TS het ook op deze manier oplost, en niet met een foutieve code.

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude

Pagina: 1