[PHP] mkdir() dziala w kratke

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
boocheck
Posty: 5
Rejestracja: pt gru 09, 2005 7:35 am
Lokalizacja: torun

[PHP] mkdir() dziala w kratke

Post autor: boocheck »

mam nastepujacy problem, mam konto ftp, na nim robie stronke i m.in.
dzial 'download'. w skrypcie mam kod tworzacy sobie folder a w nim
jeszcze jeden. jasnym jest ze zeby skrypt mogl stworzyc folder musi miec
uprawnienia 'write', wiec tworze folder download z chmodem 0777 za pomoca
clienta ftp [total commander]. w nim zamieszczam skrypt tej postaci

[php]<?
mkdir("./pierwszyfolder" , 0777);
mkdir("./pierwszyfolder/drugifolder" , 0777);

/*tutaj jest przetestowany fragment skryptu upload'ujacego pliki na serw,
ktory w normalnych warunkach dziala oraz inne mniej wazne komendy, ktore
nie ogrywaja roli*/
?>[/php]

jest to fragment panelu administracyjnego. rezultatem odpalenia skryptu
jest utworzenie folderu 'pierwszyfolder' w katalogu 'download' i ... nic
wiecej. wbrew moim oczekiwaniom nie powstaje w 'pierwszymfolderze' nowy
katalog 'drugifolder' mimo, ze gdy sprawdzam przez klienta ftp
wlasciwosci katalogu 'pierwszyfolder' to widze uprawnienia 0777. pomijam
kwestie bezpieczenstwa - zdaje sobie sprawe ze folder z takimi
uprawnieniami tworzy zagrozenie, strona jednak bedzie malutka stronka,
ktora nie powinna stawac sie celem atakow.
w skrocie moje pytanie brzmi: co trzeba zrobic aby skrypt mogl stworzyc
folder, a w nim kolejny, jakie musza byc uprawnienia i jak je nadac
skryptowi

jesli taki temat mial juz miejsce na forum to prosze o linka - ja nie znalazlem

pozdrawiam i licze na wasza pomoc
maksib
Posty: 9
Rejestracja: ndz gru 25, 2005 6:38 pm
Kontakt:

Re: [PHP] mkdir() dziala w kratke

Post autor: maksib »

hmm... dziwne że tobie to nie działa mi po odpaleniu tego skryptu wszystko jest OK. (plik był umieszczony w folderze z chmodem 775)
TuRb0
Posty: 6
Rejestracja: pt gru 30, 2005 10:13 am

Re: [PHP] mkdir() dziala w kratke

Post autor: TuRb0 »

Jeśli to co nam pokazałeś jest uproszczoną wersją i nazwa 'pierwszyfolder' trzymana jest w zmiennej to sprawdź czy przypadkiem w 2 przykładzie nie zapominasz o dodaniu '/' pomiędzy tą zmienną a 'drugifolder'.
Zawsze możesz(na upartego 8) )zrobić tak:
[php]<?php
mkdir("./pierwszyfolder" , 0777);
chdir('./pierwszyfolder/');
mkdir("drugifolder" , 0777);
chdir('../');
?>[/php]
boocheck
Posty: 5
Rejestracja: pt gru 09, 2005 7:35 am
Lokalizacja: torun

Re: [PHP] mkdir() dziala w kratke

Post autor: boocheck »

stworzylem pusty plik php aby upewnic sie, ze jakies inne instrukcje nie powoduja bledow, a w nim osadzilem nast tresc

[php]<?php
mkdir("./pierwszyfolder" , 0777);
chdir('./pierwszyfolder/');
mkdir("drugifolder" , 0777);
chdir('../');
?>[/php]

i po odpaleniu skrypt tworzy folder 'pierwszyfolder', gdy wchodze w niego okazuje sie byc pusty.

problem tym bardziej mnie irytuje, gdyz kiedy ten sam skrypt odpale na innym koncie ftp to wszsytko dziala. konta te zdaja sie na pierwszy rzut oka nie roznic od siebie i uwaga SA NA JEDNYM SERWERZE!

zatem konfiguracja serwera nie komplikuje sprawy

pewnie chodzi o uprawnienia, ale przeczytalem juz troche o user'ach, owner'ach, grupach i innych chmode'ach i nie moge znalezc przyczyny tym bardziej ze w obu przypadkach katalog w ktorym ma powstac 'pierwszyfolder' ma ustawione prawa na 0777 gdy sprawdzam je przez jakiegos total commandera

nic nie rozumiem :(
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [PHP] mkdir() dziala w kratke

Post autor: viraptor »

Jeśli rzeczywiście jest to problem php, to możesz spróbować przez wykorzystanie poleceń systemowych:
[php]<?php
system('mkdir -m 0777 -p pierwszyfolder/drugifolder');
?>[/php]
Powinno stworzyć drugi i wszystki brakujące pod nim.

Ew. jeśli nie zadziała, to napisz do admina.
Sprawdź jeszcze, czy nie przekraczasz np. limitu ilości plików.
boocheck
Posty: 5
Rejestracja: pt gru 09, 2005 7:35 am
Lokalizacja: torun

Re: [PHP] mkdir() dziala w kratke

Post autor: boocheck »

niestety kod
[php]<?php
system('mkdir -m 0777 -p pierwszyfolder/drugifolder');
?>[/php]
nic nie robi, w sensie : zadnych nowych katalogow, nie wiem jak wam ale mi juz naprawde zaczyna prakowac pomyslow, zesli macie jeszcze jakiekolwiek prosze o pomoc.

przydatnym moze okazac sie, ze zauwazylem fakt, ze skrypty maja realne prawo do zapisu w folderach, ktore robilem recznie przez klienta

mam prosty skrypt, tworzacy plik *.txt z jakas tam trescia w srodku w postaci, kiedy zmienna ktora zawiera sciezke jest postaci ./folder_ktory_stworzylem_na_sztywno/nazwa_pliku_txt
plik powstaje, kiedy sprawa wyglada tak
./folder_ktory_wczesniej_stworzyl_skrypt/nazwa_pliku_txt
jak pewnie latwo sie domyslic nie tworzy pliku

moral jest zatem [chyba] taki ze nie wiedziec czemu skrypt nie moze zapisywac do folderow ktore sam tworzyl a nie ma problemow w zapisie do folderow sworzonych przeze mnie w client'cie ftp. tak jakby cos nie tak z owner'em, kiedy apache jest ownerem nie ma praw zapisu, czyli niby jakos tak 0077, kiedy jednak sprawdze uprwanienia widze 0777

probowalem zastosowac takie cos na katalogu utworzonym przez skrypt
chown("sciezka" , przemas);

(przemas to moj user na tym serwerze)

i...nic

byly tez proby typu
chmod("sciezka" , 0777);
...z tym samym efektem
ODPOWIEDZ