Cele mai multe răspunsuri nu sunt chiar adevărate sau detaliate ... Nu uitați că safe_mode
verifică dacă proprietarul SCRIPT se potrivește cu proprietarul fișierului pe care doriți să-l accesați. Nu are nimic de a face cu utilizatorul httpd: grup.
De exemplu, httpd-ul dvs. ar putea rula ca apache: daemon
, scriptul dvs. deținut de some_user: users
și fișierul pe care doriți să îl scrieți some_other_user: users
.
Dacă nu activați safe_mode_gid
, scriptul nu va putea accesa fișierul deoarece utilizatorii nu se potrivesc.
Acesta este un fenomen comun când un script creează un dosar și apoi încearcă să creeze fișiere în interiorul acestui dosar.
Crearea dosar Reușește, deoarece dosarul părinte este deținut de același utilizator ca și script-ul creându-l (cel mai probabil, acesta a fost încărcat de „some_user“).
BUT, the created folder is now owned by the httpd user, let's say apache:daemon
Dacă safe_mode
este activă, nu veți putea să creați un fișier în interiorul acestui folder deoarece proprietarul de script ( some_user
) nu se potrivește cu proprietarul dosarului apache ).
Chiar dacă activați safe_mode_gid
, aceasta nu va funcționa deoarece grupul de script-uri este "utilizatori" în timp ce grupul de foldere este "daemon".
Cea mai bună soluție este să setați același grup pentru utilizatorii ftp și httpd.
Nu uitați că trebuie să permiteți accesul la scriere pentru grupul din folderul "writeable" și acest lucru este mai puțin sigur deoarece, deoarece toți utilizatorii dvs. se află în același grup, un proces httpd poate accesa fișierele altor utilizatori de când activați < code> safe_mode_gid .
De fapt, combinați safe_mode_gid
+ open_basedir
și setați casa utilizatorului ca valoare open_basedire
pentru a evita acest lucru.
HTH