You are on page 1of 28

A

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

n
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

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.

Da biste instalirali XAMPP


na Windowsu:
1. Preuzmite najnovije izdanje XAMPP-a
za Windows sa adrese www.apachefriends.org.
Moraete malo da lutate dok ne pronaete odeljak za preuzimanje (engl.
download), ali ete pronai podruje u
kojem se preuzimanje nalazi A . Zatim
pritisnite EXE, to je konkretno ono to
vam treba.
2. Na svom raunaru, dva puta pritisnite
preuzeti fajl da biste pokrenuli proces
instaliranja.
3. Ako se pojavi zahtev, instalirajte XAMPP
negde izvan direktorijuma Program Files.

A Sa veb sajta Apache


Friends, uzmite najnoviji installer za Windows.

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.

C Instalacija XAMPP-a je zavrena!

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).

D Kontrolni panel XAMPP, za upravljanje softverom.

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

E Uvodna stranica za XAMPP na Vebu, pozvana sa


kontrolnog panela.

Instalacija na
Mac OS X-u
Mada se Mac OS X isporuuje sa ugraenim serverom Apache, a instaliranje
MySQL-a nije tako teko, preporuujem
da poetnici pou sasvim sigurnim putem
i primene sveobuhvatni instaler MAMP
(www.mamp.info). Za njega postoji i besplatna i komercijalna verzija, veoma se
lako koristi i nee uticati na server Apache
koji je ugraen u operativni sistem.
MAMP pored Apache-a, PHP-a i MySQLa instalira takoe i phpMyAdmin, veb
interfejs ka MySQL serveru, kao i mnoga
korisna PHP proirenja. Dok ovo piem,
MAMP (verzija 1.9.6.1) instalira dve verzije
PHP-a (5.2.13 i 5.3.2), pored MySQL-a
5.1.44, Apache-a 2.0.63 i phpMyAdmin-a
3.2.5.
Opisau proces instaliranja po takama. 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
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.

Da biste instalirali MAMP


na Mac OS X-u:
1. Preuzmite najnovije izdanje MAMP-a sa
www.mamp.info.
Na naslovnoj stranici, pritisnite
Downloads, a zatim pritisnite
Download: MAMP & MAMP PRO
1.9.6.1 A . (Kako se budu pojavljivala
novija izdanja MAMP-a, link i ime fajla
e se, naravno, menjati.)
Isti preuzeti fajl se koristi za oba proizvoda. U stvari, MAMP Pro je samo lepi
interfejs za kontrolisanje i podeavanje
istog MAMP softvera.
nastavalja se na sledeoj strani

A Preuzmite MAMP sa ove stranice na www.mamp.info.

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.

B Sadraj preuzete kopije diska MAMP.

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.

C Jednostavna aplikacija MAMP, za kontrolu i konfigurisanje Apache-a, PHP-a i MySQL-a.

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.

E MAMP-ova matina veb stranica.

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.

F Ove opcije diktiraju ta se deava kada pokrenete

ili zaustavite MAMP aplikaciju.

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.

G MAMP dozvoljava da se promeni mesto na


kojem se uvaju veb dokumenti.

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

Upravljanje MySQL
korisnicima
Kad jednom uspeno instalirate MySQL,
moete poeti da pravite MySQL korisnike. MySQL korisnik je fundamentalan
bezbednosni koncept, koji ograniava
pristup sauvanim podacima i uticaj
nad njima. Da bi bilo jasnije: vae baze
podataka mogu da imaju vie razliitih
korisnika, kao to ima i va operativni sistem. Ali korisnici MySQL-a se razlikuju od
korisnika operativnog sistema. Dok uite
PHP i MySQL na vlastitom raunaru, ne
mora vam biti potrebno da pravite nove
korisnike, ali za ive produkcione sajtove
su potrebni namenski MySQL korisnici sa
odgovarajuim dozvolama.
Poetna MySQL instalacija ima jednog
korisnika (po imenu root) bez postavljene
lozinke (osim ako koristite MAMP, koji
postavlja podrazumevanu lozinku root).
Minimum koji morate da uradite nakon
instaliranja MySQL-a je da napravite novu
bezbednu lozinku za osnovnog korisnika. Posle toga, moete da pravite druge
korisnike sa ogranienijim dozvolama. Po
pravilu, ne bi trebalo korisnika root da koristite za normalne, svakodnevne poslove.
Opisau oba ova procesa po takama na
sledeim stranicama. Skreem vam panju
da ako koristite udomljeni server, verovatno
e vam oni napraviti MySQL korisnike. Za
ovaj postupak je potreban klijent sa komandne linije mysql ili phpMyAdmin. Ako
ne znate kako da ih pokrenete na svom raunaru, proitajte brzo odeljak Pristupanje
MySQL-u u poglavlju 4 Uvod u MySQL.

Postavljanje lozinke za korisnika root


im instalirate MySQL, za lozinku osnovnog korisnika nije postavljena vrednost
ili bar nije postavljena bezbedna vrednost.
To svakako predstavlja bezbednosni rizik
koji treba popraviti pre nego to ponete
da koristite server (jer korisnik root ima
neogranienu mo).
Lozinku svakog korisnika moete da postavite pomou phpMyAdmin-a ili klijenta
mysql, pod uslovom da je server MySQL
aktivan. Ako MySQL trenutno nije aktivan,
pokrenite ga sada, postupkom prethodno
opisanim u dodatku.
Zatim, morate da budete povezani sa
MySQL-om kao osnovni korisnik root da
biste mogli da menjate lozinku osnovnog
korisnika.

Da biste dodelili lozinku korisnika


root pomou MySQL klijenta:
1. Poveite se za MySQL klijenta.
Po potrebi, potraite detaljna uputstva u
poglavlju 4.
2. Upiite sledeu komandu, u kojoj treba
re samalozinka da zamenite lozinkom
koju elite da koristite A :
SET PASSWORD FOR root@
localhost' = PASSWORD
('samalozinka');

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.

A Auriranje lozinke
korisnika root koristei
SQL u MySQL klijentu.

A8Dodatak A:Instalacija

3. Napustite MySQL klijenta:


exit

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.

Da biste dodelili lozinku korisnika


root pomou phpMyAdmin-a:
1. Otvorite phpMyAdmin u svom veb
pretraivau.
Vidite detaljna uputstva u prethodnoj
grupi taaka.
2. Na matinoj stranici, izaberite karticu
Privileges.
Da biste otili na matinu stranu, uvek
moete da pritisnete ikonu matine
stranice, u gornjem levom uglu.
3. U listi korisnika, u redu korisnika root
pritisnite ikonu Edit Privileges B .

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';

Zatim sauvajte fajl pa ponovo uitajte


phpMyAdmin u svoj veb pretraiva.

4. Lozinku ete promeniti u obrascu


Change Password C , koji se nalazi
neto nie na dobijenoj stranici.

B Spisak MySQL korisnika, prikazanih u phpMyAdmin-u.

C Obrazac za auriranje
lozinke MySQL korisnika
sa phpMyAdmin-om.

Instalacija A9

Pravljenje korisnika i privilegije


Poto uspeno pokrenete MySQL i poto
postavite lozinku osnovnog korisnika,
moete da dodate druge korisnike. Zbog
bezbednosti vaih baza podataka, trebalo
bi za pristupanje bazama podataka uvek
da napravite druge korisnike, a ne da
stalno koristite korisnika root.
Sistem privilegija u MySQL-u je projektovan tako da se obezbede prava ovlaenja
za odreene komande nad konkretnim
bazama podataka. Ta tehnologija omoguava da veb domain, na primer, bez brige
dozvoli da razni korisnici pristupaju raznim
bazama podataka. Svaki korisnik moe u
MySQL sistemu da ima konkretne mogunosti nad konkretnim bazama podataka sa konkretnih domaina (raunara).
Korisnik root osnovni MySQL korisnik,
ne osnovni korisnik sistema ima najvia
ovlaenja i koristi se da bi se napravili
podreeni korisnici (engl. subuser), iako se
i podreenim korisnicima mogu dodeliti
iste takve moi (ali se to ne preporuuje).

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

SELECT

itanje redova iz tabela.

INSERT

Dodavanje novih redova


podataka u tabele.

Kada korisnik pokua neto da uradi sa


MySQL serverom, MySQL najpre proverava
da li korisnik uopte ima dozvolu povezivanja sa serverom (na osnovu korisnikog
imena, korisnikovog raunara, korisnikove
lozinke i informacija u tabeli user baze
podataka mysql). Zatim, MySQL proverava da li korisnik ima dozvolu da izvrava
konkretnu SQL naredbu nad konkretnim
bazama podataka na primer, da selektuje podatke, dodaje podatke, ili da napravi
novu tabelu. U tabeli A.1 navedena je
veina razliitih privilegija koje mogu da se
postave za pojedinane korisnike.

UPDATE

Menjanje postojeih podataka


u tabelama.

DELETE

Uklanjanje postojeih
podataka iz tabela.

INDEX

Pravljenje i uklanjanje indeksa


na tabelama.

ALTER

Menjanje strukture tabele.

CREATE

Pravljenje novih tabela ili


baza podataka.

DROP

Brisanje postojeih tabela ili


baza podataka.

RELOAD

Ponovno uitavanje grant


tabela (ime se aktiviraju
izmene korisnika).

SHUTDOWN

Zaustavljanje MySQL servera.

Korisnici i privilegije mogu u MySQL-u da se


postavljaju na nekoliko naina, ali poeu od
opisa komande GRANT. Syntaksa je sledea:

PROCESS

Pregledanje i zaustavljanje
postojeih MySQL procesa.

FILE

Uvoenje podataka u tabele iz


tekstualnih fajlova.

GRANT

Pravljenje novih korisnika.

REVOKE

Povlaenje korisnikih dozvola

GRANT privilegije ON bazapodataka.* TO


'korisnikoime@imeraunara IDENTIFIED BY
'lozinka;

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.

Da biste pravili nove korisnike:


1. Prijavite se u MySQL klijenta kao
osnovni korisnik (root).
Uputstvo moete pronai u poglavlju 4
, ukoliko vam treba. Morate da budete
prijavljeni kao korisnik ovlaen da pravi
baze podataka i druge korisnike.
2. Napravite bazu podataka temp :
CREATE DATABASE temp;

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.

Pravljenje korisnika u
phpMyAdmin-u
Da biste pravili korisnike u phpMyAdminu, ponite biranjem kartice Privileges na
matinoj stranici phpMyAdmin. Na stranici
Privileges pritisnite Add A New User. Popunite
obrazac Add A New User u kojem definiete
korisniko ime, domaina, lozinku i privilegije.
Zatim pritisnite Go. Tako ste napravili korisnika sa optim privilegijama ali bez privilegija za
konkretnu bazu podataka.
Na rezultujuoj stranici, izaberite bazu podataka nad kojom e vaiti korisnikove privilegije
pa pritisnite Go. Na sledeoj stranici, izaberite
privilegije koje bi korisnik trebalo da ima nad
tom bazom podataka, pa ponovo pritisnite
Go. Time je zavren proces pravljenja prava
tog korisnika nad tom bazom podataka.
Primetiete da ovim procesom mogu korisniku
lako da se dodele razliita prava nad razliitim
bazama podataka.
Na kraju, vratite se istim putem nazad na
karticu Privileges na matinoj stranici, pa
pritisnite link Reload the Privileges.

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 ?>

Da biste testirali PHP:


1. Napravite sledei PHP dokument
u tekst editoru ili IDE okruenju (skript
A.1):
<?php
phpinfo();
?>

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

A Informacije o PHP konfiguraciji ovog servera.

(Mac OS X i MAMP).
Instalacija A13

Da biste testirali PHP i MySQL:


1. Napravite nov PHP dokument u svom
tekst editoru ili IDE okruenju (skript A.2):
<?php
mysqli_connect (localhost, webuser, BroWs1ng, temp);
?>

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).

B Skript nije bio u stanju da se konektuje za MySQL


server.

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.

A14Dodatak A:Instalacija

C Skript nije bio u stanju da se konektuje za MySQL


server zato to za PHP nije omoguena MySQL
podrka.

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

Da li da se ukljui ili iskljui isplay_errors


Podrazumevani nivo izvetavanja o
grekama
Podrka za funkcije proirenja Improved
MySQL Extension

SMTP vrednosti za slanje elektronske


pote

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).

Omoguavanje podrke za proirenja


Mnoge opcije PHP konfiguracije mogu da se menjaju jednostavnim ureivanjem fajla php.ini.
Ali za omoguavanje (ili onemoguavanje) proirenja drugim reima, dodavanje podrke za
proirenje funkcionalnosti potreban je vei napor. Da bi se omoguila podrka za neko proirenje
samo na jednoj PHP stranici, moete da upotrebite funkciju dl( ). Da bi se podrka za neko
proirenje omoguila za sve PHP skriptove treba malo rada. Naalost, korisnici Unix-a i Mac OS
X-a moraju da rekonstruiu PHP sa podrkom za ovo novo proirenje (taj proces nije za bojaljive).
Korisnicima Windowsa je lake:
Najpre, treba da urede fajl php.ini (opisano u ovom odeljku), tako to uklone znak taka i
zarez ispred proirenja koje ele da omogue. Na primer, da bi se omoguila podrka za proirenje
Improved MySQL Extension, treba pronai red koji glasi
;extension=php_mysqli.dll

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

Da biste menjali
konfiguraciju PHP-a:
1. U svom veb pretraivau izvrite skript u
kojem se poziva funkcija phpinfo().
Funkcija phpinfo(), opisana u prethodnom odeljku dodatka (vidite A ),
otkriva veliku koliinu informacija o PHP
instalaciji.
2. U rezultatu koji dobijete od pretraivaa,
potraite Loaded Configuration File A .
Vrednost pored ovog teksta je
lokacija aktivnog konfiguracionog
fajla. To e biti neto nalik na C:\
xampp\php\php.ini ili / /Applications/MAMP/conf/php5.3/php.ini. Na
vaem serveru moe da se nalazi vie
fajlova php.ini , ali vaan je ovaj.
Ako za Loaded Configuration File nije
navedena vrednost, znai da na vaem
serveru nema aktivnog fajla php.ini .
U tom sluaju, moraete da preuzmete
izvorni kd PHP-a sa sajta www.php.net,
da biste pronali probni konfiguracioni
fajl.
3. Otvorite fajl php.ini u bilo kojem tekst
editoru.
Ako odete u navedeni direktorijum, a u
njemu nema fajla php.ini, moraete da
preuzmete taj fajl sa PHP-ovog veb sajta
(ovaj fajl je deo izvornog koda PHP-a).
4. Promenite sve to elite, obratite panju
na sledee:
XX Komentari su oznaeni takom i zarezom. Sve iza toga se zanemaruje.
XX U fajlu se nalaze objanjenja veine

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

A Pomou skripta phpinfo()


proverite koji je aktivan fajl PHP
konfiguracije koji treba da se uredi.

Omoguavanje elektronske pote


PHP funkcija mail( ) radi samo ako
raunar na kojem se izvrava PHP ima
pristup ka sendmail ili nekom drugom
mail serveru. Jedan od naina da se
omogui funkcija mail( ) je da se u
fajlu php.ini postavi vrednost za smtp
(samo za Windows). To reenje uspeva,
na primer, ako va dobavlja Interneta
ima SMTP adresu koju moete da koristite. Naalost, tu vrednost ne moete da
koristite ako SMTP server vaeg dobavljaa zahteva proveru autentinosti.
Za Windows, postoji i niz besplatnih
SMTP servera, kao to je Mercury. On se
instalira zajedno sa XAMPP-om, a moete i sami da ga instalirate bez XAMPP-a.
Mac OS X se isporuuje sa instaliranim
mail serverom postfix i/ili sendmail koji treba omoguiti. Posluite se
Google-om da biste pronali uputstva za
runo omoguavanje vaeg mail servera
na Mac OS X-u.
Druga mogunost je da pretraite neke
biblioteke PHP koda i nauite kako da
koristite SMTP server koji zahteva proveru autentinosti.

XX Iz razloga bezbednosti, nemojte

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

taka i zarez) da biste oznaili ta ste


menjali i kada. Na primer:
; display_errors = Off
; Sledei red je dodao LEU
08/28/2011
display_errors = On

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

Pravite virtualne raunare


Dodajete podrku za Secure Sockets
Layer (SSL)

titite direktorijume

Omoguite prepravljanja URL-a

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

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.

Pravljenje virtualnih raunara


Kada instalirate Apache na jedan raunar, Apache je podeen da opsluuje
jedan veb sajt, kao www.example.com. Za
opsluivanje veb sajta, Apache na serveru
pridruuje jedno ime raunara (i/ili jednu
IP adresu) jednom direktorijumu, koji se
nazove koren veb dokumenata (engl. Web
document root). Kada korisnik poseuje
www.example.com, Apache mu daje fajlove
iz direktorijuma tog sajta A .
Meutim, Apache moe lako da se konfigurie da opsluuje vie razliitih sajtova,
koji su svi udomljeni na istom raunaru,
tako to se naprave virtualni raunari
(engl. virtual hosts). Poto uspostavite
jedan ili vie virtualnih raunara, Apache

e znati da kada korisnik uputi zahtev za


www.example.com, treba da mu ponudi

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.

neki folder
ukazuje na ovo

ukazuje na ovo

B Zahvaljujui virtualnim raunarima, razni direktorijumi na raunaru mogu


da budu pridrueni razliitim imenima domaina.

Instalacija A19

Da biste napravili virtualni raunar:


1. Otvorite httpd.conf u bilo kojem tekst
editoru
ili IDE okruenju.
Ako koristite XAMPP na Windowsu,
fajl koji treba da otvorite je C:\xampp\
apache\conf\httpd.conf (ukoliko ste
XAMPP instalirali na osnovni disk C ).
Ako koristite MAMP na Mac OS X-u, fajl
koji treba da otvorite je /Applications/MAMP/conf/apache/httpd.conf.
Skreem vam panju da ako koristite
MAMP Pro, virtualne raunare moete
da pravite u kontrolnom panelu te
aplikacije.
2. Na sam kraj konfiguracionog
fajla, dodajte:
NameVirtualHost 127.0.0.1

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>

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

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:

lokalna verzija sajta forums.

A20Dodatak A:Instalacija

5. Dodajte jo jedan virtualni raunar za


localhost C :
<VirtualHost 127.0.0.1>
DocumentRoot C:/xampp/htdocs
ServerName localhost
</VirtualHost>

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.

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

NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
Ali poto MAMP na Mac OS X-u i XAMPP,
zavisno od moguih konflikata, ne koriste
uvek port 80, odluio sam se za kd koji
nee praviti probleme.
SAVET Na velikom veb serveru, bolje je
napraviti vie konfiguracionih fajlova, koje
zatim osnovni konfiguracioni fajl uitava i
koristi. Na vlastitom personalnom raunaru, bez previe prilagoavanja, dovoljan je
jedan konfiguracioni fajl.

C Nove direktive dodate na kraj Apache-ovog konfiguracionog fajla.

Instalacija A21

Auriranje liste domaina na vaem


raunaru
U prethodnim takama smo u Apache-u
napravili virtualni raunar da bi se, u ovom
primeru, u veb pretraivau pristupalo veb
sajtu forums preko URL-a http://forums.
local. Meutim, tu postoji zakoljica:
kad biste taj URL uneli u svoj pretraiva,
pretraiva bi pokuao da nae forums.
local na Internetu i tamo ga ne bi pronaao D . Da bi se reila ova dilema, morate
da obavestite va pretraiva (odnosno,
pretraivae) da se forums.local nalazi na vaem raunaru. To ete postii
izmenom fajla hosts vaeg operativnog
sistema, po sledeem uputstvu.

Da biste aurirali fajl


hosts vaeg raunara:
1. Otvorite fajl hosts vaeg raunara u bilo
kojem tekst editoru ili IDE okruenju.
Ovo je jedini teak deo ovog procesa:
pronalaenje i otvaranje fajla hosts. Na
Mac OS X-u i Unix-u, fajl domaina je /
etc/hosts (fajl nema ekstenziju), gde
se / odnosi na osnovni direktorijum
raunara. Na Mac OS X-u, /etc je sakriven (engl. hidden) direktorijum, pa je
tako hosts sakriven fajl. Postoje tri laka
naina da se ovaj fajl pronae:
XX Upotrebite svoju editorsku aplikaciju i

otvorite fajl direktno, ako je aplikacija


u stanju da otvara sakrivene fajlove.
XX U Finder-u, izaberite Go > Go To

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-

nali i otvorili fajl.

A22Dodatak A:Instalacija

D Poruka u Internet Exploreru kada on ne moe da


pronae lokalni virtualni raunar.

E Za pristupanje sakrivenim direktorijumima moe


se upotrebiti Finderova opcija Go > Go to Folder.

Na Windowsu, osim u nestandardnim


instalacijama, fajl o kojem je re je C:\
Windows\System32\drivers\etc\
hosts. Naalost, kad pokuate da

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

otvorite Notepad u administratorskom reimu.

4. Uitajte http://forums.local u svoj


veb pretraiva G .
SAVET Svaki put kad hoete da pravite nov
projekat veb sajta sa vlastitim pridruenim
imenom domaina, ponovite ova dva niza
taaka pravljenje virtualnog raunara u
Apache-u i dodavanje tog raunara u va fajl
hosts.

Korienje .htaccess fajlova


G Sajt forums, dostupan lokalno preko URL-a

http://forums.local.

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 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).

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

Postavljanje podrazumevane stranice direktorijuma


Obino, veb pretraivai upuuju zahteve bez navoenja fajla, kao www.example.com/ili www.
example.com/folder/. U tim sluajevima, Apache mora da odlui ta da radi. Tradicionalno,
Apache nudi fajl index.htm ili index.html, ukoliko postoji u tom direktorijumu. Ako ne
postoji fajl index, a server dozvoljava pretraivanje direktorijuma, Apache e umesto toga ponuditi
listu fajlova u direktorijumu (to nije bezbedno, ali bez sumnje ste to ve viali onlajn).
Direktiva kojom se Apache upuuje ta da radi u tim situacijama je DirectoryIndex. Iza te direktive stavlja se spisak fajlova koje treba koristiti kao indeks foldera, tako to se vie opcija navodi
redosledom prioriteta. Na primer, sledeom direktivom e se pokuati uitavanje index.htm,
zatim index.html, ako ne postoji index.htm, zatim index.php, ako ne postoji index.
html:
DirectoryIndex index.htm index.html index.php

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>

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).

Da biste omoguili
.htaccess nadjaavanja:
1. Otvorite httpd.conf u bilo kojem tekst
editoru
ili IDE okruenju.
2. U okviru oznaka VirtualHost za sajt o
kojem je re, dodajte:
<Directory /putanja/do/direktorijum>
</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

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:
Odbijanje svakog pristupa

Ograniavanje pristupa na ovlaene


korisnike

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 skriptovi 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

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.

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>

A26Dodatak A:Instalacija

I Ovaj zahtev za unos, prikazan u Internet Exploreru na Windowsu, generie Apache da bi se pristup
ograniio samo na ovlaene korisnike.

Omoguavanje prepravljanja URL-a


Poslednja tema o kojoj e biti rei u ovom
dodatku je kako se vri prepravljanje
URL-a (engl. URL rewriting). Prepravljanje
URL-a je sve aktuelnije u sklopu arogantnog insistiranja na optimizaciji maina za
pretraivanje (SEO Search Engine Optimization), ali se prepravljanje URL-a ve
godinama uspeno koristi. U dinamiki
upravljanom sajtu, kao to je sajt za etrgovinu, esto se stranici u URL-u predaje neka vrednost kojom se ukazuje na
kategoriju proizvoda koje treba prikazati,
pa se dobija URL kao to je www.example.
com/category.php?id=23. PHP skript,
category.php, zatim koristi vrednost iz $_
GET[id] za biranje proizvoda koje izvlai
iz baze podataka i prikazuje ih. (U ovoj
knjizi ima mnogo slinih primera.)
Kad se primenjuje prepravljanje URL-a,
URL koji se prikazuje u pretraivau, koji je
vidljiv krajnjem korisniku i koji se pominje
u rezultatima maine za pretraivanje,
moe da se pretvori u neto oiglednije
razumljivo, kao www.example.com/category/23/ ili, jo bolje, www.example.com/
category/garden+gnomes/ jer e Apache,
preko prepravljanja URL-a, da uzme taj
korisniku razumljiviji URL i ralaniti ga u
neto to je upotrebljivo u PHP skriptu.
To je mogue zahvaljujui Apache modulu mod_rewrite. Da bi se modul koristio, .htaccess fajl mora prvo da ispita
prisustvo modula i da ukljui mainu za
prepravljanje (engl. rewrite engine):
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>

Nakon ukljuivanja maine, a pre zavrne


oznake IfModule, moete da dodate
pravila za prepravljajnje. Sintaksa je:
RewriteRule uzorak zamena

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

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.

A28Dodatak A:Instalacija

Menjanje PHP konfiguracije


Ako se PHP izvrava kao Apache modul,
takoe moete pomou Apache-ovog
.htaccess fajla da menjate kako se PHP
izvrava u konkretnim direktorijumima.
Odgovarajue direktive su php_flag i
php_value:
php_flag stavka vrednost
php_value stavka vrednost
Direktiva php_flag se koristi za parametre
sa vrednostima on ili off; php_value je za
ostale parametre. Na primer:
php_flag display_errors on
php_value error_reporting 30719

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).

You might also like