De curand mi-am instalat mediul de lucru XAMPP pe linux. Folosesc Ubuntu 10.04, distributie pe care am mai facut aceasta instalare la un moment dat. Cu toate acestea, de acesta data am dat de o problema pe care nu o mai intalnisem pana acum.
Pentru cei care n-au mai instalat XAMPP pe Linux pana acum, sa incepem cu lucrurile de baza. Instalarea in sine. Aceasta se face in cativa pasi simpli.
- Se descarca arhiva de aici.
- Instalarea se face in felul urmator. Deschideti un terminal si mergeti in directorul in care ati descarcat arhiva. Acolo se ruleaza:
sudo su tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt
Prima comanda va da drepturi de administrator. Cea de-a doua extrage continutul arhivei xampp-linux-1.7.3a.tar.gz
in directorul /opt
. Gata, ati instalat XAMPP. Il gasiti in directorul /opt/lampp
. Ca sa porniti server-ul trebuie sa mergeti in terminal si sa rulati:
/opt/lampp/lampp start
Ar trebui sa vedeti ceva de genul:
Starting XAMPP 1.7.3a... LAMPP: Starting Apache... LAMPP: Starting MySQL... LAMPP started.
Comanda de mai sus primeste parametrii start/stop/restart/reload
.
N-am sa intru in detalii despre configurarea server-ului pentru ca am facut ceva asemanator pe Windows. Sa revin la problema despre care va povesteam mai devreme. Asa cum am proceda si pe Windows, dupa ce am instalat mediul de lucru, m-am dus sa modific DocumentRoot
-ul din cel implicit, in cel dorit de mine.
Se pare ca, de cate ori faceam acest lucru, Apache refuza sa-mi serveasca paginile. Ajungeam mereu intr-o pagina de Forbidden
. Tin sa mentionez ca, intrucat folosesc si Windows pe aceasta statie, partitia pe care imi tin documentele de lucru este una formatata NTFS
. Prin urmare, noul DocumentRoot
se afla intr-un director de forma "/media/Development/work/php..."
.
Primul lucru la care m-am gandit este ca nu exista drepturi pe directorul respectiv. Folosind comanda ls -ls
am verificat drepturile pe acel director si am vazut ca acestea includeau si scrierea.
In acest moment am inceput sa modific httpd.conf
sa-l fac din ce in ce mai permisiv, cu speranta ca la un moment dat va functiona. Fara succes.
In lipsa de orice alta idee mai buna am inceput sa cercetez cu atentie fisierul httpd.conf
in cautarea vreunei setari care ar putea sa-mi ofere raspunsul. Si am gasit-o.
Se pare ca, in mediul Linux, Apache are nevoie sa se prezinte sistemului de operare drept un User
care face parte dintr-un Grup
. Acestea vin configurate implicit ca fiind nobody/nobody.
In urma acestei descoperiri, m-am intors sa fac cercetari. Am aflat ca:
- Existau drepturi de scriere pe directorul pe care eu il voiam
DocumentRoot
, dar numai pentru user-ul/grupul meu - Intr-adevar, directorul
/opt/lampp/htdocs
(DocumentRoot
-ul care functiona), era configurat implicit sa apartina user-ului nobody si grupului cu acelasi nume.
Prin urmare am setat o valoare corecta pentru user/grup
in httpd.conf
, si anume user-ul si grupul pe care le folosesc eu si totul s-a rezolvat. Am tinut sa scriu acest articol din noua motive. Unul ca sa documentez ce s-a intamplat, in cazul in care uit (da, s-au mai intamplat situatii similare).
Al doi-lea motiv este sa vin in ajutorul celor care au aceeasi problema dar n-au avut nocorcul sau inspiratia sa ajunga la respectiva linie de cod in httpd.conf
.
Tin sa mentionez ca editarea fisierului httpd.conf
trebuie facuta cu drepturi elevate. Puteti sa lansati gEdit sau ceva asemanator din terminal si sa mergeti cu File -> Open sa alegeti fisierul. Mie mi s-a parut mai comod sa folosesc mcedit
direct in linia de comanda.