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
[PHP] mkdir() dziala w kratke
Re: [PHP] mkdir() dziala w kratke
hmm... dziwne że tobie to nie działa mi po odpaleniu tego skryptu wszystko jest OK. (plik był umieszczony w folderze z chmodem 775)
Re: [PHP] mkdir() dziala w kratke
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
)zrobić tak:
[php]<?php
mkdir("./pierwszyfolder" , 0777);
chdir('./pierwszyfolder/');
mkdir("drugifolder" , 0777);
chdir('../');
?>[/php]
Zawsze możesz(na upartego
[php]<?php
mkdir("./pierwszyfolder" , 0777);
chdir('./pierwszyfolder/');
mkdir("drugifolder" , 0777);
chdir('../');
?>[/php]
Re: [PHP] mkdir() dziala w kratke
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
[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
Re: [PHP] mkdir() dziala w kratke
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.
[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.
Re: [PHP] mkdir() dziala w kratke
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
[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
