Includerea de conținut activ, de pildă scripturi și executabile, în directoarele serverului web destinate documentelor este de multe ori considerată o metodă nesigură. Dacă, din cauza unei greșeli în configurație, scripturile nu sunt executate ci afișate ca documente HTML, aceasta va duce la dezvăluirea proprietății intelectuale sau a informației securizate, cum ar fi parolele. De aceea mulți administratori de sistem configurează o altă structură de directoare pentru scripturile care sunt accesibile numai prin PHP CGI, deci care vor fi întotdeauna interpretate și nu afișate direct.
De asemenea dacă metoda de determinare a redirecționării interpelării, descrisă mai sus, nu este disponibilă, atunci este necesară configurarea unui director doc_root pentru scripturi, care este diferit de cel pentru documente web.
Puteți stabili directorul-rădăcină al scripturilor PHP prin directiva
doc_root din
fișierul de configurație,
sau puteți configura variabila de mediu PHP_DOCUMENT_ROOT.
Dacă este setată, versiunea CGI a PHP întotdeauna va construi denumirea
fișierului astfel ca să fie deschis cu acest
doc_root
și informațiile despre cale din
interpelare, de aceea puteți fi sigur că nici un script nu va fi executat
în afara acestui director (excepție fiind user_dir
de mai jos).
O altă opțiune folosită este user_dir.
Când user_dir nu este configurat, singurul lucru care controlează fișierul
deschis este doc_root
. Deschiderea unui URL ca
http://my.host/~user/doc.php nu va rezulta
în deschiderea unui fișier din directorul home al utilizatorului, ci a
unui fișier numit ~user/doc.php din
doc_root (da, un director a cărui denumire începe cu tildă
[~]).
Dacă user_dir este configurat spre exemplu ca public_php, o interpelare de genul http://my.host/~user/doc.php va deschide un fișier numit doc.php din directorul numit public_php aflat în directorul home al utilizatorului "user". Dacă directorul rădăcină al utilizatorului "user" este /home/user, fișierul executat este /home/user/public_php/doc.php.
Expansiunea user_dir
se petrece independent de
setarea doc_root
, deci puteți controla accesul la
directorul rădăcină și la directoarele utilizatorilor în mod separat.