Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP - problem sa 'include path'?

[es] :: PHP :: PHP za početnike :: PHP - problem sa 'include path'?

[ Pregleda: 1794 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Gost




Profil

icon PHP - problem sa 'include path'?12.07.2011. u 16:57 - pre 155 meseci
Da li neko ko ima vise iskustva sa radom u PHP script jeziku moze da kaze kako bih mogao da resim problem koji mi se javlja prilikom pisanja koda za jedan web sajt.

U nastavku teme potrudicu se da opisem problem sto je bolje moguce:

Sadrzaj celog web sajta smestio sam u sledeci folder

Citat:

D:\htdocs\sajt\www


Kreirao sam 'home.php' fajl koji sadrzi PHP i HTML kod glavne pocetne web stranice i isti fajl sam smestio u sledeci direktorijum
Citat:

D:\htdocs\sajt\www\home.php


u istom fajlu sam napisao sledeci deo PHP koda:
Code:

<?php
include 'php/header.php';
?>


Fajl 'header.php'
se nalazi u direktorijumu
Citat:

D:\htdocs\sajt\www\php\header.php


Fajl 'header.php' sadrzi sledeci kod:
Code:

<?php
include 'cookies.php';
include 'hitcounter.php';
?>


Oba fajla koja se pozivaju nalaze se u istom direktorijumu gde se nalazi i sam 'header.php' fajl
Citat:

D:\htdocs\sajt\www\php\cookies.php
D:\htdocs\sajt\www\php\hitcounter.php


Problem koji sam uocio se javlja kod poziva fajla 'hitcounter.php'

Sam fajl sadzi kod za izvrsavanje brojaca broja posecenosti samog web sajta sto se moze uociti i prema samom imenu istog fajla. Kod koji isti fajl sadrzi je sledeci:

Code:

<?php
$hits;
if(!isset($_COOKIE["Sajt"]))
{
$count_my_page = ("..\hitcounter.txt");
$hits = file($count_my_page);
$hits[0] ++;
$fp = fopen($count_my_page , "w");
fputs($fp , "$hits[0]");
fclose($fp);
}
else
{
//echo "cookie je vec postavljen";

$count_my_page = ("..\hitcounter.txt");
$hits = file($count_my_page);
$fp = fopen($count_my_page , "r");
fclose($fp);
}
?>



Problem nastaje kada otvorim glavnu stranicu u web klijentu pozivom na sledeci link


Brojac pocinje da broji od broja 1 umesto od poslednje vrednosti.

Razlog ovom problemu jeste sto isti brojac kreira zaseban 'hitcounter.txt' fajl na sledecoj lokaciji i podrazumevano pocinje da broji ponovo od broja '1'.

Citat:

d:\Apache\htdocs\sajt\hitcounter.txt


umesto da inkrementira i cita vec postavljenu vrednost u potrebnom fajlu

Citat:

d:\Apache\htdocs\sajt\www\hitcounter.txt


Brojac radi normalno kada otvorim neku od pod web stranica unutar samog sajta koja se nalazi u zasebnom folderu.

Na primer:
Citat:

D:\Apache\htdocs\sajt\www\Proizvodi\Proizvodi.php


PHP kod fajla 'Proizvodi.php' izgleda ovako:
Code:

<?php
include '../php/header.php';
?>


Kada otvorim istu pod stranicu sve radi normalno tj. brojac otvara trazeni fajl na datoj lokaciji
Citat:

d:\Apache\htdocs\sajt\www\hitcounter.txt


Ovaj problem se javlja jedino kada se vrsi poziv brojaca sa glevne web stranice iz glavnog 'home.php' fajla koji se nalazi na lokaciji
Citat:

d:\Apache\htdocs\sajt\www\home.php


PHP kod fajla 'home.php':
Code:

<?php
include 'php/header.php';
?>


Da li neko ko ima vise iskustva sa PHP-om moze da kaze kako da osiguaram da se trazeni 'hitcounter.txt' fajl uvek poziva sa iste lokacije nevezano za to gde se nalazi sam fajl u kome se vrsi poziv brojaca preko fajla

Code:

include 'php/header.php';

ili
Code:

include '../php/header.php';


Ja sam proucio dole navedene clanke vezane za PHP medjutim jos nisam odgonetnuo sta moze tacno da bude problem.

Google
Citat:

php path problem
php path problem for includes file
http://php.net/manual/en/function.include.php

 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: PHP - problem sa 'include path'?13.07.2011. u 01:41 - pre 155 meseci
Problem ti ne prestavlja include vec file i fopen funkcije, kada njima prosledis relativnu putanju do fajla php ce je resolveovati na osnovu "trenutnog direktorijuma" (pogledaj getcwd() funkciju) a to je onaj direktorijum u kom se nalazi skripta koja je prva pozvana, tj ona koja je includeovala sve ostale (home.php u tvom slucaju). Ovo vazi za situaciju kada se php izvrsava na web serveru, pokretanje preko cli-a je druga stvar, ali te to sad verovatno ne interesuje..

Probaj da ovo (btw, ove zagrade nemaju nikakav smisao ovde, nije greska da se stave ali nemaju nikakav semanticki znacaj):
Code (php):

$count_my_page = ("..\hitcounter.txt");
 


zamenis sa ovim:
Code (php):

$count_my_page = realpath(rtrim(dirname(__FILE__), '\\/') . '/../hitcounter.txt');
 


evo sta ovo tacno radi:

1. __FILE__ je specijalna php konstanta i sadrzi apsolutnu putanju do fajla u kom se nalazi (u ovom slucaju to bi bilo D:\htdocs\sajt\www\php\hitcounter.php)
2. dirname() funkcija vraca samo putanju do foldera, u ovom slucaju to je D:\htdocs\sajt\www\php
3. posto dirname moze nekad da vrati putanju sa slashom na kraju (u slucaju da je u pitanju root putanja) sa rtrim() uklanjamo / ili \ sa kraja stringa koji je dirname fja vratila
4. spajamo string koji imam do sad (D:\htdocs\sajt\www\php) sa /../hitcounter.txt da dobijemo D:\htdocs\sajt\www\php/../hitcounter.txt
5. realpath() fja sredjuje slasheve i backslasheve i resolvuje . i .. tako da na kraju dobijemo D:\htdocs\sajt\www\hitcounter.txt sto je apsolutna putanja do fajla koji ti treba

ovako ces uvek imati ispravnu putanju bez obzira koja skripta (tacnije iz kog foldera) je includeovala hitcounter.php
 
Odgovor na temu

neb
RS

Član broj: 30960
Poruke: 463
*.dynamic.stcable.net.



+1 Profil

icon Re: PHP - problem sa 'include path'?10.08.2011. u 14:28 - pre 154 meseci
Hvala ti puno
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: PHP - problem sa 'include path'?

[ Pregleda: 1794 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.