Professional Documents
Culture Documents
Instalacija
Postoje tri tehnika preduslova da bi se izvrili svi primeri iz ove knjige: MySQL (aplikacija baze podataka), PHP (jezik za skriptovanje) i aplikacija veb servera (kroz koju PHP radi). U ovom dodatku opisano je instaliranje ovih alatki na dve razliite platforme Windows 7 i Mac OS X. Ako koristite udomljeni veb sajt, sve to ste ve dobili, ali ovi proizvodi su svi besplatni i sasvim se lako instaliraju, pa jo uvek ima smisla da ih postavite na vlastiti raunar. Osim instaliranja, u ovom dodatku su opisana i neka povezana pitanja od znaaja za skoro svakog korisnika. Najpre, opisujem kako se u MySQL-u prave korisnici. Zatim, izlaganjem tehnika koje e vam biti potrebne kad god prvi put ponete da koristite neki server, prikazujem kako da testirate svoju PHP i MySQL instalaciju. Nakon toga, nauiete kako da konfiguriete PHP da biste promenili njegovo funkcionisanje. Na kraju, novost u ovom izdanju knjige, pokazau vam kako da izmenite ponaanje veb servera Apache da biste zadovoljili uobiajene potrebe.
Instalacija na Windowsu
Mada na Windows raunar svakako moete pojedinano da instalirate veb server (kao to je Apache, Abyss, ili IIS), PHP i MySQL, toplo vam preporuujem da radije upotrebite sveobuhvatan instaler. To je svakako lake i mnogo pouzdanije. Za Windows se nudi nekoliko sveobuhvatnih instalera. Najee se pominju dva: XAMPP (www.apachefriends.org) i WAMP (www.wampserver.com). U ovom dodatku, koristiu XAMPP, koji odgovara za veinu verzija Windowsa. Osim servera Apache, PHP-a i MySQL-a, XAMPP takoe instalira:
n
PEAR (PHP Extension and Application Repository), biblioteku PHP koda Perl, veoma popularan programski jezik phpMyAdmin, veb interfejs prema MySQL serveru Server za mail (za slanje elektronske pote) Nekoliko korisnih proirenja
n n
Dok ovo piem, XAMPP (verzija 1.7.4) instalira PHP 5.3.5, MySQL 5.5.8, Apache 2.2.17 i phpMyAdmin 3.3.9. Opisau proces instaliranja po takama. Napominjem da, u sluaju da se jave neki problemi, moete da se obratite na forum za podrku ovoj knjizi (www.LarryUllman. com/forums/), ali ete verovatno vie sree imati na XAMPP-ovom sajtu (konano, to je njihov proizvod). Osim toga, instaler zaista dobro funkcionie i nije teak za upotrebu, pa neu ulaziti u sve detalje svake take, ve radije istiem najvanija razmatranja.
O mrenim barijerama
Mrena barijera spreava komunikaciju preko portova (port je pristupna taka raunara). Verzije Windows-a poevi od XP Service Pack 2 sadre ugraenu mrenu barijeru. Moete takoe da preuzmete i instalirate mrene barijere drugih dobavljaa. Mrene barijere unapreuju bezbednost vaeg raunara, ali mogu takoe da ometaju vae mogunosti da koristite Apache, MySQL, i neke druge alatke potrebne za XAMPP, zato to sve one koriste portove. Kada koristite XAMPP, ako vam se pojavi bezbednosno upozorenje koje nagovetava da mrena barijera blokira (engl. firewall is blocking) Apache, MySQL, ili neto slino, izaberite Unblock ili Allow, zavisno od verzije Windowsa koju koristite.
Inae, moete runo da konfiguriete svoju mrenu barijeru (na primer, za Windows 7 se to radi u Control Panel > System and Security). Sledei portovi treba da budu otvoreni : 80 (za Apache), 3306 (za MySQL) i 25 (za mail server Mercury). Ako ne moete da ih pokrenete ili da im pristupite, onemoguite mrenu barijeru i pokuajte ponovo. Ako problem nestane, znaete da je problem u mrenoj barijeri i da je treba prekonfigurisati.
A2Dodatak A:Instalacija
Da bi bilo jasno, mrene barijere ne postoje samo na Windowsu, ali u smislu uputstava u ovom dodatku, prisustvo mrene barijere pre e ometati korisnika Windowsa, nego ikoga drugog. Zbog jednog pitanja sa dozvolama na nekim verzijamaWindowsa, izbegnite instaliranje u direktorijum Program Files. Preporuujem da instalirate XAMPP u svoj koreni direktorijum (npr., C:\).
B Izaberite i druge instalacione opcije koje elite.
Koje god mesto odabrali za instaliranje programa, zabeleite tu lokaciju, jer e vam taj podatak biti potreban jo nekoliko puta tokom proraivanja ovog dodatka. 4. Ako elite, napravite preice na radnoj povrini i na meniju Start B . 5. Nastavite po preostalim takama, proitajte ih i pritiskajte Enter/Return za nastavak. 6. Poto instalacioni proces obavi sve to treba C , pritisnite Yes kako bi se pokrenuo kontrolni panel.
nastavalja se na sledeoj strani
Instalacija A3
7. Kontrolni panel XAMPP koristiete za pokretanje, zaustavljanje i za konfigurisanje XAMPP-a D . 8. Prema potrebi, koristiete kontrolni panel da biste pokrenuli Apache, MySQL i Mercury. Apache mora da bude aktivan za sva poglavlja u knjizi. MySQL mora da bude aktivan za oko polovine poglavlja. Mercury je server za elektronsku potu koji instalira XAMPP. On mora da bude aktivan da bi mogle da se alju email poruke pomou PHP-a (vidite poglavlje 11 Razvijanje veb aplikacija). 9. Odmah odredite lozinku za osnovnog MySQL korisnika. Kako ete to da uradite, objasniu kasnije u dodatku.
SAVET Razni administrativni linkovi XAMPP-ovog kontrolnog panela vodie vas do raznih veb stranica (na vaem serveru) i do drugih resursa E . SAVET Vidite odeljak Konfigurisanje PHPa da biste nauili kako da konfiguriete PHP u fajlu php.ini. SAVET Va osnovni veb direktorijum u koji morate da postavite svoje PHP skriptove da biste ih testirali je folder htdocs u direktorijumu u koji je instaliran XAMPP. Prema ovim uputstvima za instaliranje, to bi bilo C:\xampp\htdocs. SAVET Prilikom pokretanja XAMPP Control Panela koristei XAMPP 1.7.4 na 64-bitnoj verziji Windowsa 7, svaki put sam dobijao poruku o greci o nekakvom Status Check Failure. Nisam uspeo da otkrijem uzrok, ali ta greka nije spreila da XAMPP bude potpuno upotrebljiv.
A4Dodatak A:Instalacija
knjizi (www.LarryUllman.com/forums/), ali ete verovatno vie sree imati na MAMP-ovom sajtu (konano, to je njihov proizvod). Osim toga, instaler zaista dobro funkcionie i nije teak za upotrebu, pa neu ulaziti u sve detalje svake take, ve radije istiem najvanija razmatranja.
Instalacija A5
2. Na svom raunaru, pritisnite dva puta na preuzeti fajl da biste montirali kopiju diska B . 3. Kopirajte folder MAMP iz kopije diska u va folder Applications. Ako smatrate da e vam se vie dopasti komercijalni MAMP PRO, kopirajte i taj folder (ponavljam, to je samo interfejs za MAMP, pa su potrebna oba foldera). Za MAMP PRO imate besplatan probni period od 14 dana. Koji god folder odabrali, obratite panju na to da morate da ga postavite u folder Applications. On ne moe da bude u nekom podfolderu ili u nekom drugom direktorijumu na vaem raunaru. 4. Otvorite folder /Applications/MAMP (ili /Applications/MAMP PRO). 5. Pritisnite dva puta na aplikaciju MAMP (ili MAMP PRO) da biste pokrenuli program C . Potrajae neki momenat dok se ne pokrenu serveri, ali tada ete ugledati rezultat kao na slici C za MAMP ili D za MAMP PRO. Kada pokrenete MAMP, trebalo bi istovremeno da se otvori i poetna stranica u vaem podrazumevanom veb pretraivau F . Preko te stranice moete da vidite koja verzija PHP-a se izvrava, kao i njeno konfigurisanje, a takoe i da prilazite MySQL bazi podataka pomou phpMyAdmin-a. Ako izaberete MAMP PRO, moete da pristupite istoj toj stranici pritiskom na dugme WebStart D .
D Aplikacija MAMP PRO, za kontrolu i konfigurisanje Apache-a, PHP-a, MySQL-a i tako dalje.
A6Dodatak A:Instalacija
6. Aplikaciju MAMP ili MAMP PRO koristiete za pokretanje, zaustavljanje i za konfigurisanje MAMP-a C ili D . Sama aplikacija MAMP ne sadri mnogo (to je dobro), ali ako pritisnete na Preferences, moi ete da doterujete ponaanje aplikacije F , odredite koja verzija PHP-a da se izvrava i druge stvari. MAMP PRO takoe olakava pravljenje drugih virtualnih raunara (engl. virtual hosts) (tj., drugih sajtova; to zasebno opisujem u ovom dodatku), podeavanje konfigurisanja i rada Apache-a, korienje dinamikih DNS-ova, menjanje naina na koji se alje email i drugo. 7. Odmah odredite lozinku za osnovnog MySQL korisnika. Kako ete to da uradite, objasniu kasnije u dodatku.
SAVET Ja lino cenim koliko je sam MAMP dobar i to to je besplatan. Ni ja ne volim da troim novac, ali nalazim da se aplikacija MAMP PRO isplati, za tu relativno nisku cenu.
SAVET Vidite odeljak Konfigurisanje PHPa da biste nauili kako da konfiguriete PHP u fajlu php.ini. SAVET MAMP se isporuuje sa istrument tablom Dashboard pomou koje moete da kontroliete servere Apache i MySQL. SAVET Va osnovni veb direktorijum u koji morate da postavite svoje PHP skriptove da biste ih testirali je folder htdocs u direktorijumu u koji je instaliran MAMP. Prema standardnim uputstvima za instaliranje, to bi bilo Applications/MAMP/htdocs. SAVET Moda ete poeleti da prebacite Document Root za Apache G u direktorijum Sites u vaem matinom folderu. Na taj nain, obezbediete da se vai veb dokumenti kopiraju zajedno sa ostalim fajlovima (a vi redovno pravite rezervne kopije, zar ne?).
Instalacija A7
Imajte na umu da su lozinke u MySQL-u osetljive na razliku izmeu velikih i malih slova, pa Kazan i kazan nije isto. Izraz PASSWORD ispred lozinke koja je u navodnicima upuuje MySQL da taj string kodira. Pazite da ne bude razmaka izmeu rei PASSWORD i otvorene zagrade.
A8Dodatak A:Instalacija
4. Testirajte novu lozinku tako to ete se ponovo prijaviti u MySQL klijenta. Poto je lozinka sada uspostavljena, morate komandi za povezivanje da dodate indikator -p. Pojavie se zahtev za unos Enter password: , na koji treba da odgovorite upravo postavljenom lozinkom.
5. Promenite lozinku osnovnog korisnika u konfiguracionom fajlu phpMyAdmin-a, ako je potrebno. Kad se promeni lozinka osnovnog korisnika, to e verovatno imati kao posledicu da se phpMyAdmin-u uskrati pristup serveru MySQL. To je zato to se phpMyAdmin, na lokalnom serveru, obino povezuje sa MySQL-om kao osnovni korisnik i da je lozinka osnovnog korisnika fiksno kodirana u konfiguracionom fajlu. Poto obavite take 14, pronaite fajl config.inc.php u direktorijumu phpMyAdmin-a verovatno /Applications/MAMP/bin/phpMyAdmin (Mac OS X sa MAMP-om) ili C:\xampp\phpMyAdmin (Windows sa XAMPP-om). Otvorite taj fajl u bilo kojem tekst editoru ili IDE okruenju pa promenite ovaj sledei red tako da se koristi nova lozinka:
$cfg[Servers][$i][password] = 'nova_lozinka';
Instalacija A9
Za privilegije u ovoj naredbi, moete da navedete konkretne privilegije iz tabele A.1, ili moete da odobrite sve ako stavite ALL (to nije razborito). Delom naredbe bazapodataka.* odreuje se na kojoj bazi podataka i na kojim tabelama korisnik moe da radi. Moete da navedete konkretne tabele, pomou sintakse bazapodataka.imetabele ili sa *.* da dozvolite sve baze podataka (ni to nije razborito). Na kraju, moete da navedete korisniko ime, ime raunara i lozinku. Korisniko ime ne sme biti due od 16 znakova. Kada pravite korisniko ime, vodite rauna da izbegnete razmak (umesto toga stavite donju crtu), i obratite panju na to da se u korisnikim imenima velika slova razlikuju od malih.
Tabela A.1 MySQL privilegije
PRIVILEGIJA OMOGUAVA itanje redova iz tabela. Dodavanje novih redova podataka u tabele. Menjanje postojeih podataka u tabelama. Uklanjanje postojeih podataka iz tabela. Pravljenje i uklanjanje indeksa na tabelama. Menjanje strukture tabele. Pravljenje novih tabela ili baza podataka. Brisanje postojeih tabela ili baza podataka. Ponovno uitavanje grant tabela (ime se aktiviraju izmene korisnika). Zaustavljanje MySQL servera. Pregledanje i zaustavljanje postojeih MySQL procesa. Uvoenje podataka u tabele iz tekstualnih fajlova. Pravljenje novih korisnika. Povlaenje korisnikih dozvola
SELECT INSERT UPDATE DELETE INDEX ALTER CREATE DROP RELOAD SHUTDOWN PROCESS FILE GRANT REVOKE
A10Dodatak A:Instalacija
Raunar domain je raunar sa kojeg je korisniku dozvoljeno da se povezuje. To moe da bude ime domena, kao to je www.example.com, ili IP adresa. Obino se kao ime domaina stavlja localhost, to znai da MySQL korisnik mora da se povezuje sa istog raunara na kojem se izvrava MySQL baza podataka. Ako hoete da dozvolite bilo koji raunar, stavite dokerski znak za ime domaina (%):
GRANT privilegije ON bazapodataka.* TO 'korisnikoime@% IDENTIFIED BY ' lozinka;
Ali ni to se ne preporuuje. Kada pravite korisnike, najbolje je da budete izriiti i ograniavajui. Za lozinku nema ogranienja duine, ali takoe se razlikuju velika i mala slova. Lozinke su u MySQL bazi podataka ifrovane, to znai da se ne mogu vratiti u format istog teksta. Ako se izostavi klauzula IDENTIFIED BY lozinka od tog korisnika se nee traiti da unese lozinku (i to bi trebalo izbegavati). Kao primer ovog procesa, napraviete dva nova korisnika sa konkretnim privilegijama nad novom bazom podataka po imenu temp. Imajte na umu da korisnicima mogu da se odobravaju dozvole samo nad postojeim bazama podataka. U sledeem nizu taaka opisuje se i kako se pravi baza podataka.
Pravljenje baze podataka je sasvim lako, pomou navedene sintakse. Ova komanda uspeva, pod uslovom da ste povezani kao korisnik sa pravilnim privilegijama. 3. Napravite korisnika sa osnovnim privilegijama nad bazom podataka temp D :
GRANT SELECT, INSERT, UPDATE, DELETE ON temp.* TO webuser@localhost IDENTIFIED BY BroWs1ng;
Opti korisnik webuser moe da pregledava zapise (SELECT nad tabelama) da dodaje (INSERT), menja (UPDATE), ili da brie DELETE zapise. Ovaj korisnik sme da bude povezan jedino preko raunara localhost (sa istog raunara) i sme da pristupa jedino bazi podataka temp.
nastavalja se na sledeoj strani
D Pravljenje korisnika koji sme da obavlja osnovne poslove nad jednom bazom podataka.
Instalacija A11
4. Primenite izmene F :
FLUSH PRIVILEGES;
Unete izmene nee imati efekta sve dok ne kaete MySQL-u da ispravi listu prihvatljivih korisnika i privilegija, to se postie ovom komandom. esta je greka da se ovaj korak zaboravi, pa je zbog toga nemogue pristupiti bazi podataka pomou novostvorenih korisnika.
SAVET Svaku bazu podataka ije ime poinje na test_ moe da menja svaki korisnik sa dozvolom konektovanja za MySQL. Prema tome, pazite da ne napravite bazu podataka sa takvim imenom ukoliko zaista nije eksperimentalna. SAVET Komandom REVOKE se korisnici i dozvole uklanjaju.
E Nemojte zaboraviti ovaj korak pre pokuaja da pristupite MySQL-u pomou novostvorenih korisnika.
A12Dodatak A:Instalacija
Testiranje instalacije
Sada poto ste instalirali sve i napravili neophodne MySQL korisnike, trebalo bi da testirate instalaciju. U tu svrhu mogu se upotrebiti dva brza PHP skripta. Ako je dolo do neke greke, vi to najverovatnije ve znate, ali sledei postupak e vam omoguiti da izvrite testiranje na svom (ili nekom drugom) serveru pre nego to se upustite u sloenije programiranje u PHPu, ili PHP-u sa MySQL-om. Prvi skript koji izvravamo je phpinfo.php. On ispituje da li je PHP omoguen i takoe prikazuje veliku koliinu informacija o PHP instalaciji. Koliko god ovaj skript bio jednostavan, to je jedan od najznaajnijih skriptova koje PHP programer ikad napie, po mom miljenju, zato to prua toliko dragocenog znanja. Drugi skript e posluiti u dve svrhe. Najpre e utvrditi da li je omoguena podrka za MySQL. Ako nije, moraete u sledeem odeljku ovog dodatka da vidite kako se to menja. Isti skript takoe ispituje da li MySQL korisnik ima dozvolu povezivanja za konkretnu MySQL bazu podataka.
Skript A.1 Skript phpinfo.php ispituje PHP instalaciju i izvetava o njoj.
1 <?php 2 phpinfo( ); 3 ?>
Funkcija phpinfo( ) vraa u jednoj tabeli konfiguracione informacije PHP instalacije. To je savrena alatka za testiranje pravilnog rada PHP-a. Za pravljenje PHP skripta moete da upotrebite skoro svaku aplikaciju, pod uslovom da ona moe da sauva fajl u formatu istog teksta. 2. Sauvajte fajl kao phpinfo.php. Morate da proverite da li je ekstenzija fajla samo .php. Obratite panju ako koristite Notepad na Windowsu, jer on tajno dodaje jo i .txt. Slino tome, TextEdit na Mac OS X-u hoe sve da uva kao .rtf. 3. Postavite fajl u pravi direktorijum na vaem serveru. ta e biti pravi direktorijum zavisi od vaeg operativnog sistema i vaeg veb servera. Ako koristite udomljeni sajt, pitajte kod svoje kompanije domaina. Za korisnike Windowsa koji su instalirali XAMPP, taj direktorijum se naziva htdocs i nalazi se unutar direktorijuma XAMPP. Za korisnike Mac OS X-a koji su instalirali MAMP, podrazumevani direktorijum se naziva htdocs i nalazi se u folderu MAMP. 4. Testirajte PHP skript tako to mu pristupite iz svog veb pretraivaa A . Izvrite ovaj skript u svom veb pretraivau preko http://ovde.va.url/ phpinfo.php. Na vlastitom raunaru, to e biti neto kao http://localhost/ phpinfo.php (Windows i XAMPP) ili
http://localhost:8888/phpinfo.php
Skript A.2 Skript mysqli_test.php ispituje MySQL podrku za PHP i da li su postavljene pravilne privilegije MySQL korisnika.
1 <?php 2 mysqli_connect (localhost, webuser, BroWs1ng, temp); 3 ?>
Ovaj skript e pokuati da se povee sa MySQL serverom pomou korisnikog imena i lozinke koje smo upravo uspostavili u ovom dodatku. 2. Sauvajte fajl kao mysqli_test.php, postavite ga u pravi direktorijum za va veb server i testirajte ga u svom veb pretraivau. Ako skript uspe da se konektuje, rezultat e biti prazna stranica. Ako ne uspe da se konektuje, trebalo bi da ugledate poruku o greci kao na slici B . Najverovatnije e biti u pitanju problem sa privilegijama MySQL korisnika ili sa dobijenim informacijama (vidite prethodni odeljak ovog dodatka). Ako ugledate greku kao na slici C , znai da za PHP nije omoguena MySQL podrka. Potraite reenje u sledeem odeljku ovog dodatka.
SAVET Iz razloga bezbednosti, ne bi trebalo skript phpinfo.php da ostavljate na ivom serveru zato to on odaje previe informacija. SAVET Ako pokrenete PHP skript u svom veb pretraivau a on pokua da uita fajl, znai da va veb server ne prepoznaje ekstenziju fajla kao PHP. Pregledajte konfiguraciju Apache-a (ili drugog veb servera) da biste to ispravili. SAVET PHP sriptovi moraju uvek da se izvravaju preko URL-a koji poinje na http://. Oni ne mogu da se izvravaju direktno sa vrstog diska (kao da ste ga otvorili u svom pretraivau). SAVET Ako PHP skript ne moe da se konektuje za MySQL server, to je obino zbog nekog pitanja dozvola. Proverite ponovo korisniko ime, lozinku i domaina koji se koristi, i budite apsolutno sigurni da ste primenili (engl. flush) MySQL privilegije.
C Skript nije bio u stanju da se konektuje za MySQL server zato to za PHP nije omoguena MySQL podrka.
A14Dodatak A:Instalacija
Konfigurisanje PHP-a
Jedna od prednosti instaliranja PHP-a na vlastitom raunaru je to to moete da ga konfiguriete kako god hoete. Kako e PHP raditi, utvruje se u konfiguracionom fajlu php.ini, koji se obino pravi prilikom PHP instaliranja. Menjanje PHP-ovog ponaanja je vrlo jednostavno i najverovatnije e u nekom trenutku biti potrebno. Ovo je nekoliko stvari o ijem podeavanju ete moda razmiljati
n n
ta znai svako od ovih pitanja ako jo niste upoznati objanjeno je u poglavljima knjige i u PHP priruniku. Ali, za poetak, ja bih toplo preporuio da display_errors svakako bude ukljueno i da postavite izvetavanje o grekama na najvii mogui nivo. Menjanje PHP konfiguracije je zaista jednostavno. Krai put je da uredite fajl php.ini i ponovo pokrenete veb server. Ali, zbog mnogih razliitih problema do kojih moe doi, opisau konfiguraciju detaljnije. Ako elite da omoguite podrku za neko proirenje, kao to su MySQL funkcije, konfigurisanje je sloenije (vidite istaknuti komentar).
Da li da se ukljui ili iskljui isplay_errors Podrazumevani nivo izvetavanja o grekama Podrka za funkcije proirenja Improved MySQL Extension
i ukloniti taj znak taka i zarez. Zatim, treba pronai red u kojem se postavlja direktorijum proirenja extension_dir i podesiti ga za svoju PHP instalaciju. Uzmimo da ste instalirali PHP pomou XAMPP-a u C:\xampp, tada u fajlu php.ini treba da stoji extension_dir = C:/xampp/php/ext Tako se PHP obavetava gde se nalazi proirenje. Zatim, proverite da li se taj fajl proirenja, u ovom sluaju php_mysqli.dll, zaista nalazi u direktorijumu proirenja. Sauvajte fajl php.ini i ponovo pokrenite veb server. Ako se u procesu ponovnog pokretanja pojavi poruka o tome da proirenje nije pronaeno (engl. error finding extension), proverite ponovo da li proirenje postoji u extension_dir i da li su vam putanje ispravne. Ako i pored toga imate probleme, pretraite Veb ili potraite pomo na odgovarajuem forumu ove knjige.
Instalacija A15
A Pomou skripta phpinfo() proverite koji je aktivan fajl PHP konfiguracije koji treba da se uredi.
parametara.
XX Na poetku fajla su opte informacije
i primeri. Nemojte menjati te vrednosti! Menjajte parametre tamo gde se nalaze dalje u fajlu.
A16Dodatak A:Instalacija
menjati originalne parametre. Samo ih pretvorite u komentare (stavite znak taka i zarez ispred njih) a zatim dodajte nov, izmenjeni red iza toga.
XX Dodajte komentar (pomou znaka
5. Sauvajte fajl php.ini . 6. Pokrenite ponovo veb server. Ne morate ponovo da pokreete ceo raunar, samo aplikaciju veb servera (Apache, IIS, itd.). Kako ete to da uradite, zavisi od aplikacije koju koristite, od operativnog sistema i od metoda instalacije. Korisnici Windowsa mogu da koriste kontrolni panel XAMPP. Korisnici Mac OS X-a mogu da koriste kontrolni panel MAMP. Korisnici Unix-a obino mogu prosto u prozor Terminal da upiu apachectl graceful. 7. Izvrite ponovo skript phpinfo.php kako biste proverili da li su izmene sprovedene.
SAVET Ako uredite fajl php.ini i ponovo pokrenete veb server ali vae izmene nemaju dejstvo, proverite da li ste menjali pravi fajl php.ini (mogue je da na raunaru imate vie njih). SAVET MAMP PRO na Mac OS X-u koristi za fajl php.ini jedan ablon koji mora da se ureuje u samom MAMP PRO-u. Da biste menjali PHP parametre ako koristite MAMP PRO, izaberite File > Edit Template > PHP X.X.X php.ini.
Instalacija A17
Konfigurisanje Apache-a
Novost u ovom izdanju knjige je ovaj odeljak, koji sadri uvod u konfigurisanje veb servera Apache. Isto kao PHP, Apache je tehnologija otvorenog koda, a postao je preovlaujua sila u veb tehnologijama. Ako ste na svoj raunar instalirali XAMPP ili MAMP, vi sada imate funkcionalnu verziju Apache-a. Ako koristite udomljeni veb sajt, vie je nego verovatno da i tamo imate Apache. Poto instaliraju Apache sa podrkom za PHP, mnogi PHP programeri vie ne razmiljaju o veb serveru. Ali, kako sve vie uite o razvoju za Veb, sledei logian korak je da uite malo vie o Apache-u. Najei razlog da bolje prouite Apache je, izmeu ostalog, mogunost da radite sledee:
n n
Na primer, ako imate www.example.com/ nekidir/.htaccess, svaki zahtev za www. example.com/nekidir/bilota trai se itanje tog .htaccess fajla, kao i itanje fajla .htaccess koji moda postoji u www. example.com/. S druge strane, u okruenjima deljenog udomljavanja (engl. shared hosting), pojedinanim korisnicima nije dozvoljeno prilagoavanje cele Apache konfiguracije, ali im se moe dozvoliti da koriste .htaccess i vre promene koje utiu samo na njihov sajt. Na sledeih nekoliko strana, objasniu neke od osnovnih pojmova za rad sa te dve vrste fajlova. Pri tom ete nauiti da vrite neka standardna prilagoavanja Apache-a.
SAVET Za svaki sluaj, preporuio bih da, pre vrenja bilo koje od sledeih izmena, napravite rezervnu kopiju vaeg originalnog konfiguracionog fajla Apache. SAVET U ovoj knjizi ne mogu adekvatno da objasnim kako se omoguava HTTPS (HTTP preko SSL-a) poto se kljuna komponenta pribavljanje i instaliranje SSL sertifikata previe razlikuje od jednog oveka i servera do drugog. Potraite onlajn konkretne detalje, ili postavite poruku na moje forume podrke (www.LarryUllman.com/forums/), ako vam treba pomo. Ako imate udomljeni nalog u kojem elite da omoguite SSL, razgovarajte sa svojom kompanijom domainom.
Pravite virtualne raunare Dodajete podrku za Secure Sockets Layer (SSL) titite direktorijume Omoguite prepravljanja URL-a
n n
Te, i druge izmene ponaanja Apache-a, mogu da se izvre na dva naina: ureivanjem osnovnog (primarnog), konfiguracionog fajla ili pravljenjem fajlova za konkretne direktorijume. Osnovni konfiguracioni fajl je httpd.conf, nalazi se u direktorijumu conf, a diktatira ponaanje celog veb servera Apache . U veb direktorijume se stavljaju fajlovi .htaccess (izgovara se H-T akses) i koriste se da bi uticali na ponaanje Apache-a unutar tog konkretnog foldera i njegovih podfoldera. Uopteno govorei, bolje je da se menja fajl httpd.conf, poto veb server mora da ga uita jedino prilikom pokretanja servera. Naprotiv, .htaccess fajlove veb server mora da ita za svaki zahtev nad neim na ta se taj .htaccess fajl primenjuje.
A18Dodatak A:Instalacija
dokumente iz direktorijuma X , a da zahteve za www.example.net treba usmeriti na dokumente iz direktorijuma Y B . Morate da znate da time to ste postavili virtualne domaine, www.example. com ili www.example.net, oni ne postaju, stvarno, vaea imena domena, dostupna preko Interneta. Da bi se to omoguilo, potrebno je ukljuivanje DNS-a (Domain Name System), to je mnogo komplikovanija tema. Meutim, virtualne raunare moete da koristite da biste na svom kunom raunaru napravili vie raunara potrebnih za vae vlastite rezvojne projekte, kako je objanjeno u sledeim takama.
neki folder
ukazuje na ovo
A Veb server pridruuje URL ili ime domaina jednom direktorijumu ili fajlu na raunaru.
ukazuje na ovo
B Zahvaljujui virtualnim raunarima, razni direktorijumi na raunaru mogu da budu pridrueni razliitim imenima domaina.
Instalacija A19
Oznake VirtualHost se koriste da bi se napravio nov virtualni raunar. Za svaku poetnu oznaku, mora da postoji i zavrna. U okviru poetne oznake, navodi se IP adresa ili ime raunara na koji treba motriti, ovde je to: 127.0.0.1. Ova vrednost mora da odgovara vrednosti u redu NameVirtualHost. Preostali deo definicije virtualnog raunara dolazi izmeu poetne i zavrne oznake. 4. Meu oznake virtualnog raunara, dodajte:
DocumentRoot /putanja/do/folder ServerName imeservera
Virtualni raunari se uobiajeno definiu na kraju konfiguracionog fajla (ili u zasebnom konfiguracionom fajlu, koji se ukljuuje u ovaj). Ovim redom se kae da Apache treba na IP adresi 127.0.0.1 da motri na imenovane (engl. named ) virtualne raunare (za razliku od virtualnih raunara sa IP adresom) . Ovo je specijalna IP adresa, koja se uvek izjednaava sa localhost (tj., ovim istim raunarom). Zavisno od vaeg servera, ovaj red moda ve postoji u konfiguracionom fajlu, ali ispred njega stoji znak #, ime taj red postaje komentar (tj., nema efekta). U tom sluaju, samo uklonite #. 3. U sledeem redu, dodajte:
<VirtualHost 127.0.0.1> </VirtualHost>
Direktiva DocumentRoot ukazuje na koreni veb direktorijum za taj virtualni raunar: drugim reima, gde se nalaze sami fajlovi ovog sajta. Za XAMPP naWindowsu, ta vrednost moe da bude C:/xampp/htdocs/neto. Za MAMP na Mac OS X-u, ta vrednost bi mogla da bude /Applications/MAMP/ htdocs/neto.
ServerName je red gde stavljate
imeraunara: ono to ete unositi u pretraiva da biste pristupili ovom sajtu. Na primer, kad biste hteli da napravite virtualni raunar za sajt forums iz poglavlja 17 Tabla za poruke, mogli biste unutar htdocs, da napravite nov folder po imenu forums, i kopirate u njega sve odgovarajue skriptove. Tada biste kao vrednost za DocumentRoot upotrebili C:/xampp/htdocs/forums ili
/Applications/MAMP/htdocs/forums. Za vrednost ServerName, izabrao bih neto razumljivo, kao forums.local:
A20Dodatak A:Instalacija
SAVET Apache-ov podrazumevani konfiguracioni fajl, httpd.conf, sadri komentare koji opisuju ulogu svakog odeljka koda. Pregledajte ga da biste nauili poneto o konfigurisanju Apache-a. SAVET Vrednost za DocumentRoot, kao i svaka druga vrednost u fajlu httpd.conf, mora da se stavi u navodnike ako sadri razmake. SAVET Definicija virtualnog raunara moe da sadri i druge direktive, ali ovde pokuavam da izloim osnovne koncepte Apache-a na to je mogue jednostavniji nain. SAVET U stvari je poeljno da Apache motri na aktivnost samo na jednom konkretnom portu, obino je to 80. U tom sluaju bi konfigurisanje virtualnog raunara poelo sa
U prethodnim takama smo napravili nov virtualni raunar, ali tim postupkom prvobitni veb sajt (localhost, podrazumevani sajt vaeg raunara) postaje neupotrebljiv. Reenje je da se napravi jo jedan virtualni raunar za taj sajt. 6. Sauvajte konfiguracioni fajl. 7. Ponovo pokrenite Apache. Nijedna promena konfiguracionog fajla nema efekta dok se veb server ponovo ne pokrene. Apache moete ponovo da pokrenete pomou kontrolnog panela XAMPP ili MAMP. Ako postoji greka u konfiguracionom fajlu, Apache nee moi da se pokrene, pa ete morati da pregledate evidencije greaka (engl. error logs) da biste utvrdili zbog ega. Primetiete da jo uvek ne moete da pristupite virtualnom raunaru pomou veb pretraivaa, poto tek treba da aurirate listu domaina u vaem raunaru.
Instalacija A21
Folder, pa u zahtev za unos upiite / etc F kako biste otvorili direktorijum /etc u Finder-u. Zatim prevucite fajl hosts u editorsku aplikaciju u doku???in the Dock.
XX Upotrebite Terminal kako biste pro-
A22Dodatak A:Instalacija
uredite ovaj fajl mogu se pojaviti pitanja dozvola. Ja sam imao sree to sam otvorio Notepad u administratorskom reimu (pritiskom na Notepad u meniju Start desnim tasterom mia dobija se i ta opcija F ), a zatim sam otvorio fajl iz Notepada. 2. Na samom kraju fajla, dodajte:
127.0.0.1 forums.local
Time se ime forums.local pridruuje IP adresi 127.0.0.1, to znai ovaj isti raunar. 3. Sauvajte fajl.
F Da biste ureivali sistemske fajlove moete da
Kao to je ve reeno, kompletno konfigurisanje Apache-a moe da se izvri u fajlu httpd.conf. U stvari, to je najbolje. Meutim, nije vam uvek dozvoljeno da menjate konfiguracioni fajl, pa vredi nauiti kako se za menjanje nain na koji sajt funkcionie koriste fajlovi .htaccess. Fajl .htaccess je naprosto obian tekstualni fajl, pod imenom .htaccess (ni on nema ekstenziju fajla, a zbog poetne take je sakriven). Kada se fajl .htaccess postavi u neki veb direktorijum, direktive definisane u njemu vae na taj direktorijum i njegove poddirektorijume.
nastavalja se na sledeoj strani
Instalacija A23
Uobiajena prepreka pri korienju .htaccess fajlova su dozvole potrebne da bi .htaccess mogao da menja ponaanje servera. Zavisno od instalacije i konfiguracije, Apache, na najstroem nivou bezbednosti, ne dozvoljava da .htaccess fajlovi menjaju njegovo ponaanje. To se postie ovakvim kodom, u fajlu httpd.conf:
<Directory /> AllowOverride None </Directory>
Direktiva AllowOverride prihvata jedan ili vie indikatora koji ukazuju na to ta se, konkretno, moe nadjaati:
n
AuthConfig konfigurisanje pristupanja, za korienje ovlaenja i proveravanja autentinosti FileInfo - ???, za preusmeravanje i prepravljanje URL-a Indexes - indeksi, za izlistavanje sadraja direktorijuma Limit - ograniavanje, za ograniavanje pristupa direktorijumu Options - opcije, za podeavanje ponaanja direktorijuma, kao to je mogunost da se izvravaju CGI (Common Gateway Interface opti interfejs za mreni prolaz) skriptovi ili da se indeksira sadraj foldera All - sve None - nita
Direktiva Directory se u fajlu httpd.conf koristi da bi se ponaanje Apache-a menjalo u nekom konkretnom direktorijumu. U navedenom kodu, cilj je koreni direktorijum (/), to znai da Apache nee dozvoliti nikakvo nadjaavanje (engl. overrides) promene ni u jednom direktorijumu na raunaru. Dakle, pre pravljenja .htaccess fajlova, treba glavni konfiguracioni fajl podesiti tako da dozvoli nadjaavanja u odgovarajuem veb direktorijumu (ili direktorijumima).
n n
Slino tome, direktiva ErrorDocument upuuje Apache koji fajl da se ponudi kada doe do serverske greke. Sintaksa je: ErrorDocument kd_greke /stranica.html Vrednost koda greke se uzima iz kodova statusa servera, kao to su 401 (Unauthorized - neovraeno), 403 (Forbidden - zabranjeno) i 500 (Internal Server Error interna serverska greka). Moete da odredite koju stranicu treba ponuditi za svaki kd. Obratite panju na to da navedete apsolutnu putanju do fajlova greaka (tj., zaponite ih sa /, to se odnosi na osnovni veb direktorijum).
A24Dodatak A:Instalacija
Na primer, da bi se dozvolilo nadjaavanje AuthConfig i FileInfo u direktorijumu forums (koji smo upravo napravili), u fajl httpd.conf treba dodati:
<Directory /putanja/do/forums> AllowOverride AuthConfig FileInfo </Directory>
apsolutnu putanju direktorijuma o kojem je re, kao C:\xampp\htdocs\ somedir ili /Applications/MAMP/ htdocs/somedir. 3. Unutar oznaka Directory, dodajte H :
AllowOverride All
Pod uslovom da se ovaj kd nalazi nakon bloka AllowOverride None , fajl .htaccess u direktorijumu forums e moi da menja neke aspekte Apache-ovog ponaanja u radu sa fajlovima iz tog direktorijuma (i njegovih poddirektorijuma).
Ovo je grubo reenje, ali e obaviti posao. Na ivom, javno dostupnom serveru, konkretnije ete odrediti koji parametri mogu da se nadjaaju, ali na vaem kunom raunaru, to nee predstavljati problem. 4. Sauvajte konfiguracioni fajl. 5. Ponovo pokrenite Apache.
SAVET Direktiva Directory ne mora da se postavi u okviru oznake VirtualHost za sajt o kojem je re, ali je logino da se tu postavi. SAVET Ako direktorijumu nije dozvoljeno da nadjaava neki parametar, fajl .htaccess e se jednostavno zanemariti. SAVET Sve to moe da se postigne unutar .htaccess fajla, moe se postii i pomou oznake Directory u fajlu httpd.conf.
Oznakom Directory se prilagoava ponaanje Apache-a unutar konkretnog direktorijuma ili njegovih poddirektorijuma. Unutar poetne oznake, navedite
H Aurirana konfiguracija virtualnog raunara, koja sada dozvoljava nadjaavanja u veb direktorijumu forums.
Instalacija A25
Zatieni direktorijumi
Uobiajena primena .htaccess fajla je da se zatiti sadraj direktorijuma. Mogua su dva scenarija:
n n
tano to: slui kao proksi skript da bi se prikazala slika koja se uva izvan korena veb dokumenata (tj., inae je nedostupna veb pretraivau). Da bi se pristup ograniio samo na ovlaene korisnike postoji vie naina, ali je modul mod_auth najosnovniji i najee se koristi. Ovaj modul pravi u pretraivau zahtev za unos u koji korisnik moe da unese svoja ovlaenja I . Apache zatim poredi ta ovlaenja sa podacima sauvanim u jednom fajlu na serveru, a nakon toga odobrava ili odbija pristup. Modul mod_auth nije teak za upotrebu, ali morate da pozovete jo jednu Apache alatku da biste napravili fajl ovlaenja. Ako hoete da krenete tim putem, potraite Apache-ov mod_auth na Internetu.
SAVET Apache, podrazumevano, nee prikazati .htaccess fajlove u veb pretraivau, to predstavlja pametnu meru bezbednosti. SAVET Kada pravite .htaccess fajlove, proverite da li va tekst editor ili IDE okruenje tajno ne dodaje ekstenziju .txt. Notepad, na primer, ima taj obiaj. Utvrdiete da se to desilo ako vam poe za rukom da u svom veb pretraivau uitate www. example.com/.htaccess.txt. U Notepadu, moete da spreite dodavanje te ekstenzije ako stavite ime fajla u navodnike i sauvate ga kao All files.
Koliko god to delovalo udno, postoje mnoge situacije u kojima fajlovi i folderi u veb direktorijumu treba da budu nedostupni. Na primer, mogli ste da napravite direktorijum includes koji sadri osetljive PHP skriptove ili direktorijum uploads za uvanje otpremljenih fajlova. U oba sluaja, sadraj direktorijuma nije namenjen direktnom pristupanju, ve slui PHP skriptovima iz drugih direktorijuma za referenciranje tog sadraja prema potrebi. Da biste odbili svaki pristup direktorijumu, postavite kd iz skripta A.3 u .htaccess fajl u tom folderu (komentari opisuju ulogu svakog reda). Ponavljam, ovim kodom se samo spreava direktno pristupanje sadraju tog direktorijuma putem veb pretraivaa. PHP skrip), tovi jo uvek mogu da koriste include( require( ), readfile( ) i druge funkcije za pristupanje tom sadraju. U stvari, skript show_image.php iz poglavlja 11 radi
Script A.3 Ovaj kd, u .htaccess fajlu, spreie pristupanje sadraju direktorijuma i njegovih poddirektorijuma.
1 # Onemoguavanje pretraivanja direktorijuma: 2 Options All -Indexes 3 4 # Spreavanje listanja foldera: 5 IndexIgnore * 6 7 # Spreavanje pristupa svim fajlovima: 8 <FilesMatch ^.*$> 9 Order Allow,Deny 10 Deny from all 11 </FilesMatch>
I Ovaj zahtev za unos, prikazan u Internet Exploreru na Windowsu, generie Apache da bi se pristup ograniio samo na ovlaene korisnike.
A26Dodatak A:Instalacija
Na primer, mogli biste da uradite sledee (mada to nije dobra primena za mod_ rewrite):
RewriteRule nekastranica.php drugastranica.php
Deo potekoa sa prepravljanjem URL-a je to to su za veinu fleksibilnih uzoraka potrebni regularni izrazi kompatibilni sa Perl-om (PCRE Perl-Compatible Regular Expressions). Ako jo niste veti u korienju regularnih izraza, treba da proitate poglavlje 14 Regularni izrazi kompatibilni sa Perl-om, da biste mogli da pratite ostatak ovog teksta. Na primer, da bi se www.example.com/ category/23 pretvorilo u www.example. com/category.php?id=23, potrebno je sledee pravilo:
RewriteRule ^category/([0-9]+)/?$ category.php?id=$1
Poetni karet (^) kae da izraz mora da pone na poetku stringa. Tu mora da doe re category, i nakon toga kosa crta. Zatim sledi neodreen broj cifara, koje zakljuuje neobavezna kosa crta (ime se dozvoljava kako category/23 tako i category/23/). Dolarski znak zakljuuje uzorak, to znai da iza neobavezne kose crte ne sme da bude nita. To je uzorak za ovaj primer (a to je zaista jednostavan uzorak). Samo prepravljanje se izvodi bez znanja veb pretraivaa i krajnjeg korisnika. U ovom redu, to je category.php?id=$1. Deo $1 je upuivanje na prvu grupu u zagradi u uzorku (tj., 23). Znai, www.example.com/category/23 se u serveru posmatra kao da je URL glasio www. example.com/category.php?id=23.
nastavalja se na sledeoj strani
Nakon ukljuivanja maine, a pre zavrne oznake IfModule, moete da dodate pravila za prepravljajnje. Sintaksa je:
RewriteRule uzorak zamena
Instalacija A27
To je osnovni preduslov za mod_rewrite. Naalost, za ovladavanje modulom mod_ rewrite neophodno je majstorstvo, ili takorei majstorstvo u regularnim izrazima (PCRE), to moe da bude zastraujue. Ako elite da ovo vebate, moete da uzmete upravo objanjen jednostavan primer i primenite ga na bilo koji primer u knjizi u kojem se u URL-u predavala neka vrednost. Na primer, u poglavlju 10 Uobiajene tehnike programiranja, skriptovima delete_user.php i edit_user.php se u URL-u prosleuje ID korisnika. Oboje bi moglo da se pretvori u lepe URL-e, kao to su www.example.com/delete/45/ ili www.example.com/edit/895/. Kao uvek, potraite onlajn dodatne informacije o ovoj temi, ako vas to zanima, i postavite pitanje na forumima za podrku (www.LarryUllman.com/forums/) ako naiete na probleme.
Obratite panju na to da ne mogu da se koriste PHP konstante, kao to je E_ALL za najvii nivo izvetavanja o grekama, poto se ovaj kd nalazi u Apache-ovim konfiguracionim fajlovima, a ne u PHP skriptovima. (Nain izvravanja PHP-a moe da se menja i ureivanjem fajla httpd.conf, ali ako ve uvodite globalnu izmenu servera za koju je potrebno ponovno pokretanje Apache-a, mogli biste umesto toga jednostavno da izmenite PHP-ov konfiguracioni fajl).
A28Dodatak A:Instalacija