PHP fejlesztői környezet berendezese
A régi blogomban volt egy elég részletes leírás az Eclipse+PDT kombó telepítéséről, akkor még Windowsra. Azóta változtak az idők, teret nyert és a számítógépek többségén használható lett a Linux, ezért most Ubuntura írom meg ugyanezt a leírást.
Tartalomjegyzék # ↑
Előfeltételek # ↑
Mivel Ubuntu Linuxra telepítünk, előfeltétel, hogy sikerüljön fölkínlódni a gépre a nevezett Linux disztrót. Mivel ez egy külön tutorialt is kimerítene, ezért ezt külön nem taglaljuk. Én a cikk kedvéért egy szűz 9.10-es Ubuntura telepítek. Ha esetleg már van valamilyen telepített szoftvered, lehet hogy kénytelen leszel magad megoldani a dolgot.
Webszerver telepítés # ↑
Nyiss egy terminált (Application → Accessories → Terminal) majd üsd be a következőket:
janoszen@janoszen-virtual:~$ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-xdebug
Ennek hatására először be kell ütnünk a telepítéskor megadott jelszót, majd a következő kérdést kapjuk, amit hagyjunk jóvá:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap php5-common
Suggested packages:
apache2-doc apache2-suexec apache2-suexec-custom php-pear php5-suhosin
The following NEW packages will be installed:
apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5
libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap php5 php5-common php5-xdebug
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,144kB of archives.
After this operation, 13.7MB of additional disk space will be used.
Do you want to continue [Y/n]?
Némi szöszmötölés után a gép elkészül a telepítéssel és magától elindul a gépünkre éppen föltelepített webszerver. Ha beütjük a böngészőbe a http://localhost, kijön az Apache alapértelmezett „It works!“ feliratú oldala. Ezek után már csak be kell konfigurálni a kedvenc webszervert.
Mielőtt bármit csinálnánk, kapcsoljuk be a rewrite modult, mivel ennek hiánya később hajtépést okozhat:
sudo cp -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
Szükségünk lesz egy root jogosultságokkal bíró fájlkezelőre, amit a gksu nautilus paranccsal nyithatunk meg. Vigyázat! Ez az ablak rendszergazda jogosultságokkal bír és némi óvatlansággal egy pillanat alatt tönkre lehet vele tenni a rendszert!
Navigáljunk el a /etc/apache2/sites-available mappába és hozzunk létre egy üres filet „template“ néven (jobb katt → Create Document → Empty file). Ez lesz a vhost sablonunk, amiről a többit másolni fogjuk. Nyissuk meg jobb katt, Open with gedit paranccsal és másoljuk be a következő tartalmat:
<VirtualHost *:80>
ServerName template.localhost
DocumentRoot /var/www/template.localhost/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/template.localhost/htdocs>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/www/template.localhost/logs/error.log
LogLevel warn
CustomLog /var/www/template.localhost/logs/access.log combined
</VirtualHost>
Ha ezzel készen vagyunk, mentsük el és készítsünk róla egy másolatot egy leendő oldalnak. Legyen ez a „test“ nevű oldal. Ennek megfelelően a fájl neve „test“, a könyvtár neve pedig test.localhost lesz. Hozzuk létre a konfigurációban nevezett állományokat és linkeljük át a sites-enabled könyvtárba a virtualhost fájlunkat:
sudo cp -s /etc/apache2/sites-available/test /etc/apache2/sites-enabled/
Ha ezzel készen vagyunk, keressük meg a /etc/hosts fájlt és vegyük föl a következő sort:
127.0.0.1 test.localhost
Ezek újra kell rúgni az Apacsot, aminek a következő kiíráson kívül nem szabadna hibát dobnia:
janoszen@janoszen-virtual:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
apache2: Could not reliably determine the server's fully
qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully
qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Ha minden jól ment, akkor a http://test.localhost címet beírva egy bazi nagy forbidden hibát kellett kapni. Ez eddig rendben is van, hiszen nem töltöttünk föl még tartalmat.
Eclipse SDK telepítés # ↑
Első teendőnek markoljuk meg az Eclipse PDT all-in-one csomagot és bontsuk ki valahová mondjuk a home könyvtáron belül az opt könyvtárba. Mielőtt elindítanánk, gyorsan telepítsünk egy Javat is:
janoszen@janoszen-virtual:~$ sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-bin
Mivel az Eclipse és az Ubuntu között némi inkompatibilitás lép fel, készítsünk egy Eclipse indítóscriptet (mondjuk gedit segítségével) a következő tartalommal (az Eclipse helyét írjuk át):
#!/bin/sh
export GDK_NATIVE_WINDOWS=1
~/opt/eclipse/eclipse
Ha adunk a fájlra végrehajtási jogot (chmod 0755 eclipse.sh), el is lehet indítani a fejlesztő környezetet. Ha ez megvan, hozzunk létre egy új PHP projektet „test“ néven. A cél természetesen az, hogy a http://test.localhost címen ezen mappa tartalma látszódjék, ezért ki kell törölni a meglevő wwwroot könyvtárat és létre kell hozni egy symlinket az Eclipse munkakönyvtárra:
janoszen@janoszen-virtual:~$ sudo rm -rf /var/www/template.localhost/htdocs && sudo ln -s ~/workspace/test /var/www/test.localhost/htdocs
Ha ezek után létrehozunk egy index.php fájlt megfelelő tartalommal és megnézzük az oldalt, lesz nagy öröm és boldogság.
Xdebug konfigurálás # ↑
Vannak olyan rendszergazdák, akik képletesen eltörik a fejlesztők kezét, ha találnak var_dump és társai nevű függvényeket a kódban. Többek között én is és nem egészen alap nélkül. Patinásabb fejlesztőkörökben már régóta szokás léptetést lehetővé tevő debuggert használni a hibakereséshez. Sajnos a weben ez a technológia igen későn kezdett el terjedni és a mai napig vannak fejlesztők, akik inkább ragaszkodnak a jól bevált kőbaltához. De mivel Te, kedves olvasó bizonyára nem vagy ilyen, ezért gyorsan föl is tesszük az xdebugot.
Az xdebug-ban a távoli debuggolás úgy működik, hogy ha meglátja az URL-ben a neki szóló stringet, akkor rácsatlakozik a futó fejlesztőkörnyezetre. (Vigyázat, nem fordítva!) Mivel sütikkel operál, ezért akár több oldalon keresztül is lehet egy debug folyamatot futtatni.
Az alapcsomagot már föltettük, ezért most már csak nyissuk meg root jogosultságú szerkesztővel a /etc/php5/apache2/conf.d/xdebug.ini fájlt és illesszük be a végére a következő sort:
xdebug.remote_enable=on
Ezek után a már ismert módon rúgjuk újra a webszerverünket. Az Eclipseben nyissuk le a „bug“ ikont (kis csótány az eszközsoron) és válasszuk ki a Debug configurations… menüpontot. Itt bökjük meg kétszer a PHP Web Page lehetőséget, aminek hatására előjön egy halom opció.
Először is a Zend Debugger helyett válasszuk ki az xdebugot, majd a szerver melletti Configure gomb megnyomásával változtassuk meg a szerverünk címét. Gyengébbek kedvéért erre: http://test.localhost. Ezek után válasszuk ki az elindítandó fájlt, ami itt a példa kedvéért legyen ez: /index.php. (Az Eclipse alapból a projekt nevét is beteszi, ezt célszerű nem elkövetni.) Ha a becsukjuk ezt az ablakot és megnyomjuk a bogár gombot, a fejlesztőkörnyezet illedelmesen fölteszi a kérdést, hogy át akarunk-e váltani debug nézetbe. Oda lépve már látható is, hogy a program futása megállt az első soron. (Ehhez persze az első sor PHP kódot meg kellett írni, de ezt rád bízom.)
Innentől kezdve vígan lehet lépkedni a programban és nézni, hogy mi csettintődött el.