PHP Warning: open_basedir restriction in effect

Unul dintre elementele de siguranta ale PHP este si parametrul open_basedir , care se asigura ca un script PHP nu poate accesa un fisier aflat in afara locatiei/locatiilor permise.

Atunci cand un script php incearca accesarea unui fisier, de exemplu cu fopen() sau gzopen(), se verifica locatia fisierului. Daca fisierul se afla in afara locatiei permise, PHP va refuza sa-l deschida si va returna urmatoarea eroare:

Eroarea apare in log-ul server-ului de http, Apache (error_log).

Exista mai multe solutii pentru aceasta problema: dezactivarea protectiei open_basedir din php, excluderea protectiei pentru anumiti utilizatori sau domenii/subdomenii, sau acordarea permisiunii de acces pe folder-ul specificat.

In cazul utilizarii cPanel se poate dezactiva cu usurinta protectia open_basedir: Security -> Tweak security ->Configure (pentru “Php open_basedir Tweak”). Aici se poate activa/dezactiva protectia open_basedir sau se pot include/exclude zone pentru protectie.

In cazul utilizarii Plesk (cazul meu), trebuie editat manual fisierul vhost.conf si fisierul vhost_ssl.conf (daca e cazul) aflat la locatia /var/www/vhosts/host_name/conf/vhost.conf. Daca fisierul nu exista, trebuie creat. Acest fisier se modifica dupa cum urmeaza:

Pentru dezactivarea optiunii open_basedir:

Pentru acordarea accesului pentru anumite locatii:

Pentru dezactivarea open_basedir si pentru specificarea locatiilor incluse:

Merita notat faptul ca atunci cand prin open_basedir se specifica locatiile in care se permite accesul, aceasta valoare este doar un prefix si nu un nume de director. Aceasta inseamna ca

va permite accesul si la

precum si la

Pentru a restrictiona accesul doar la directoarele specificate, la sfarsit trebuie pus un slash (/):

 

Leave a Reply

Your email address will not be published. Required fields are marked *