Cazul 3: stabilirea doc_root sau user_dir

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.