DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   PHP, Apache - problem u konfiguraciji (http://www.devprotalk.com/showthread.php?t=7903)

Miroslav 26. 09. 2009. 20:32

PHP, Apache - problem u konfiguraciji
 
Instalirao sam WAMP (http://www.wampserver.com/en/)

Ovo neće da mi radi:
Kôd:

http://localhost/kontakt/
A ovo hoće:
Kôd:

http://localhost/kontakt.php
Dakle, problem je u *.php ekstenziji. Pročitao sam (http://articles.sitepoint.com/articl...riendly-urls/3) da treba u .htaccess da se doda
Kôd:

<Files kontakt>   
 ForceType application/x-httpd-php   
</Files>

Međutim, to mi ne pomaže.

------------------------------------------

Još nešto.

Ovo neće da radi:
PHP kôd:

<?= $var ?>

Ovo hoće:
PHP kôd:

<?php echo $var;?>

Zna li neko rešenja?

Unapred hvala.

mangia 26. 09. 2009. 21:07

Prvo moras nauciti da razlikujes direktorij od fajla. U prvom slucaju pokusavas da otvoris index.php (ili koji je vec default fajl) i to u kontakt dir-u a u drugom slucaju otvaras kontakt.php fajl koji je u root-u.

Sto se tice drugog problema moras ukljuciti kratke tagove (short tags)...

Miroslav 26. 09. 2009. 21:23

Što se tiče mog prvog pitanja, malo ću ga preformulisati:

Kako da podesim u Apachu da mi kontakt bude isto kao i kontakt.php, dakle da ne moram da pišem .php ekstenziju?
Znači, Apach prvo traži folder kontakt, ako ga ne nađe onda traži fajl kontakt i ako ga nađe otvori ga.

Kod nekih hosting provajdera se podrazumeva da je ovo već podešeno, dok kod nekih ne.

Markok 26. 09. 2009. 22:43

kad stavis adresu http://localhost/kontakt/ sistem uvek trazi fajl index.htm ili index.php ili default.asp i jos par varijanti

ako ne postoji nista od toga onda nece da radi

holodoc 26. 09. 2009. 22:52

Citat:

Originalno napisao Miroslav (Napišite 73555)
Što se tiče mog prvog pitanja, malo ću ga preformulisati:

Kako da podesim u Apachu da mi kontakt bude isto kao i kontakt.php, dakle da ne moram da pišem .php ekstenziju?
Znači, Apach prvo traži folder kontakt, ako ga ne nađe onda traži fajl kontakt i ako ga nađe otvori ga.

Kod nekih hosting provajdera se podrazumeva da je ovo već podešeno, dok kod nekih ne.

Ubedljivo najčešći razlog za nefunkcionisanje sadržaja .htaccess fajlova je neadekvatno podešavanje Apachea tj. njegovih konfiguracionih fajlova gde za folder gde se nalazi .htaccess nije data dovoljno velika sloboda instrukcijama u njemu da se uspešno izvrše. Prava instrukcija koje mogu ili ne mogu da se izvrše u određenom folderu se podešavaju AllowOverride Apache direktivom. ForceType direktiva zahteva da folder nad kojim se izvršava (tačnije folder u kome se nalazi .htaccess fajl sa ForceType direktivom) mora da ima minimalno FileInfo dozvolu da bi se uspešno izvršila. Postoji nekoliko rešenja za ovaj problem.

Prvo je da se u globalnom serverskom fajlu Apachea izmeni vrednost AllowOverride directive za DocumentRoot da sadrži minimalno vrednost FileInfo ili alternativno All koji bi sadržao i FileInfo u sebi. Ovaj pristup ne preporučujem uopšte.

Pametniji pristup bi bio da se pravo definiše na nivou zasebnog foldera kroz Directory direktivu. Recimo kao u sledećem kodu (Alias na kraju nije neophodan ali ja ga recimo često koristim da bih lakše došao do dugačkih staza.)
Kôd:

#Webgrind Alias
<Directory "C:/wamp/htdocs/sandbox/">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
        AllowOverride FileInfo
</Directory>
Alias /sandbox "C:/wamp/htdocs/sandbox/"

Posle izmene Apache konfiguracionih fajlova treba restartovati server.
Staze za WAMP sam bezveze lupio tako da je velika šansa da sam ih omašio jer te "all in one" sisteme nisam nikada koristio. Tvoji fajlovi (uključujući i .htaccess) bi u ovom slučaju bili smešteni u folderu C:/wamp/htdocs/sandbox/ i ako je sve urađeno kako treba trebalo bi da funkcioniše to što želiš mada opet kažem, "all in one" paketi često imaju običaj da odtsupaju od podešavanja koja se koriste na produkcionim serverima tako da možda još nešto u tom WAMP paketu pravi problem.

Moja preporuka ti je ipak da se okaneš ForceType direktive zbog toga što ona bez obzira na MIME tipove fajlova forsira server da tretira fajl drugačije od prirode samog fajla pa mogu da nastanu problemi u određenim situacijama. Ako baš hoćeš da koristiš mogućnosti ugrađene u Apache moja preporuka je da koristiš DefaultType direktivu ili eventualno da porazmisliš o Redirect odnosno RedirectMatch koje su recimo mnogo zahvalnije za definisanje jednostavnih redirekcija (ovaj tvoj primer bi verovatno bio idealan). Ako te ne uspe mod_rewrite je neka poslednja alternativa za preusmeravanje.

Miroslav 01. 10. 2009. 17:13

Citat:

Originalno napisao Markok (Napišite 73557)
kad stavis adresu http://localhost/kontakt/ sistem uvek trazi fajl index.htm ili index.php ili default.asp i jos par varijanti

ako ne postoji nista od toga onda nece da radi

Zašto nebi radilo?

Evo ovde nema index fajla pa radi sve kako treba:

http://nadjifirmu.com/reklame
http://nadjifirmu.com/reklame.php
http://nadjifirmu.com/reklame/

Možda sam ja nešto propustio... razumem kako radi Apač nego me zbunilo "neće da radi..." :)

Gargoyle 01. 10. 2009. 17:31

^ Ima tu index , ili već neki url rewrite. Pored toga razlikuj fajlove od foldera. Kreni od toga.

bOkIcA 01. 10. 2009. 17:37

U tvom primeru je verovatno podesen mod_rewrite i to je ono sto si trazio kao odgovor, ako se ne varam.
Markok ti je tacno rekao, a holodoc se vise upustio u detalje zasto ponekad nije moguce podesavati zeljeno kroz .htaccess.
Znaci trazis uputstvo za .htaccess i mod_rewrite a ako zapnes pitaj.

I da razumes kako Apache radi ne bi sigurno ovde to pitao, no offense. :)
pozz

mileusna 01. 10. 2009. 17:39

Ako želiš takvo ponašanje, da npr. /kontakt bude isto što i /kontakt.php treba da enejbluješ MultiViews Apache opciju.

Citat:

MultiViews is a per-directory option, meaning it can be set with an Options directive within a <Directory>, <Location> or <Files> section in httpd.conf, or (if AllowOverride is properly set) in .htaccess files. Note that Options All does not set MultiViews; you have to ask for it by name.

The effect of MultiViews is as follows: if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client's requirements.

itd. itd. http://httpd.apache.org/docs/2.2/mod...gotiation.html
Elem, MultiViews je često i izvor mnogih problema kada se koristi u kombinaciji sa mod_rewrite. Kada neki rewrite neobjašnjivo ne radi kako treba, obično prvo treba isključiti MultiViews. Zato ga ja po defaultu isključujem svuda. :) Ali ako samo želiš da se ne vidi php ekstenzija, trebalo bi da bude OK, zato su ga valjda i napravili...

Miroslav 07. 10. 2009. 14:48

Citat:

Originalno napisao mileusna (Napišite 73720)
Ako želiš takvo ponašanje, da npr. /kontakt bude isto što i /kontakt.php treba da enejbluješ MultiViews Apache opciju.

...

if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*

Izgleda da sam to tražio.:1016:

Citat:

Originalno napisao Miroslav (Napišite 73555)
...Apach prvo traži folder kontakt, ako ga ne nađe onda traži fajl kontakt i ako ga nađe otvori ga.

Rešenje je dakle u MultiViews.

Hvala svima na pomoći.:1016:


Vreme je GMT +2. Trenutno vreme je 12:48.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.