Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] "twarda" sciezka plikow na serwerze?
Forum PHP.pl > Forum > Przedszkole
sakul55
witam,
jak zrobic jakos twarde sciezki do plikow?

mam np
localhost/index.php
localhost/model/test.php
localhost/model/db.php
localhost/model/aaa.php

i tak:

db.php to laczenie z baza (ktore trzeba zaincludowac do index.php i aaa.php) i za kazdym wywolaniem on includuje do siebie plik db.php. i tu sie zaczyna problem. bo jak wpisze include ./model/aaa.php to plik test.php tego nie lapie, a jak wpisze include ./aaa.php to znowu index.php nie lapie.

jak to moge rozwiazac?
Fifi209
Pytanie pierwsze, co to są twarde ścieżki?
sakul55
a jak ci odpowiem co to jest to dasz mi rozwiazanie?
Fifi209
A i owszem. smile.gif

Błąd leży w samej logice Twojej "aplikacji", gdyż to przez index powinno przechodzić każde żądanie, które zostanie obsłużone przez router. etc.
thek
Ścieżka bezwzględna?

A może warto byś wiedział, że przy include bierze się pod uwagę, jako podstawową, ścieżkę pliku najwyżej w wywołaniach? Czyli jeśli masz a.php, który zawiera b.php, a ten ma wewnątrz c.php to jeśli c.php ma coś jeszcze to musisz patrzeć tak, jakbyś był nadal w a.php i względem niego ścieżkę ustawiać. Wtedy znajdzie.
Fifi209
Swoją drogą, jeżeli includujesz do indexu to połączenie z bazą czy co to tam jest, to do drugiego nie musisz już tego robić, bo już raz to zrobiłeś...

@up
Oczywiście, że tak. Jednak autor ma swoją nazwę i chciałem znać jej definicję. ;p
sakul55
wiec sam nie wiem co to jest, dlatego napisalem w cudzyslowiach tongue.gif

wiem mniej wiecej jak to dziala z tymi sciezkami, ale znalazlem taka klase, ktora jest rozbita na czesci i sie wlasnie tak bez sensu includuje. myslalem, ze da sie to jakos ze sciezkami zrobic. po prostu wszystko bylo w jednym folderze i dzialalo ok, a jak wyciagnalem index.php i dalem do wczesniejszego folderu to sie posypalo ze sciezkami, bo dziala albo dla tego, albo dla tego.
a jakby zrobic jakiegos IFa i jesli nie zaincluduje to zamiast wywalac bledy przejdzie do else i wtedy zainkluduje z innej sciezki? tylko jak to rozpoznac?

w sumie jak to wszystko polacze to bedzie dzialalo, bo od razu bedzie wszystko co potrzebne, no ale moze zna ktos inny, lepszy sposob wink.gif

napisze moze jeszcze raz jak to wyglada.

-index.php
---/model/
---db.php
---aaa.php
---test.php

pliki index.php i test.php aby dzialac musza zainkludowac plik DB.php, a ten musi zainkludowac do siebie test.php. tylko jak juz zainkluduje go do index.php to musi posiadac sciezke include(/model/aaa.php), a jesli zainkluduje go do test.php to sciezka musi byc include(aaa.php).
Crozin
Bo ścieżek względnych się nie używa - zawsze prowadzą do mniejszych lub większych problemów. Możesz sobie zdefiniować jakąś stałą wspomagającą podwanie pełnych ścieżek:
  1. define('APP_DIR', '/path/to/my/app');
  2.  
  3. // ----------
  4.  
  5. require APP_DIR . '/model/db.php';
  6. require APP_DIR . '/model/aaa.php';
Przynajmniej nigdy nie będziesz miał problemu ze ścieżkami.
sakul55
dzieki, ale nie bardzo wiem czym zastapic to /path/to/my/app .. uzywam WAMPa. localhost nie dziala
no i czy to nie beda wlasnie sciezki wzgledne?
CuteOne
jeżeli na tą stronę wchodzisz poprzez http://localhost/index.php:

index.php
  1. define('APP_PATH', realpath(dirname(__FILE__)));
  2.  
  3. require APP_PATH . '/model/db.php';


sakul55
ciagle jakies bledy, nie ma sensu sie w to bawic tak skoro i tak sie nie powinno takich sciezek uzywac. sprobuje to jakos polaczyc.
probowalem jeszcze zrobic IF od SERVER REQUEST i na podstawie tego rozpoznawac, ale znowu mi nie lapie klas i takie to bez sensu.
dzieki za zainteresowanie

jakos sobie poradzilem, ale boje sie, ze rozwalilem cala strukture. powie mi ktos czy tak to moze dzialac?


- index.php
-- /pliki/
-- wyswietl.php
-- dodaj.php
-- edytuj.php
-- layout.php

--/model/
--db.php

w index.php po prostu wrzucilem HEADER LOCATION: wyswietl.php, ktore mi wyswietla wszystkie dane z bazy. do wyswietl.php, dodaj.php , edytuj.php na koncu inkluduje layout.php i tak te pliki wyswietlam.
dziala mi wszystko ok, tylko czy to jest zgodne ze standardami, czy cos? jak to google bedzie interpretowalo itp? mozna w index.php robic headera? bo jak w index.php robilem include /pliki/wyswietl.php to wtedy mi nie lapalo sesji i te pliki sie gubily o czym wczesniej pisalem, a teraz jest wszystko ok. tylko czy tak moze byc?

aha, wszystko dzialalo poprawnie jak plik db.php byl na tym samym poziomie co index.php, ale na najnizszym poziomie takich plikow chyba sie nie powinno trzymac?


to jednak musi byc zly sposob, bo tak sie chyba nie powinno robic. ja juz sie chyba poddaje.
wszystkie pliki sa na jednym poziomie, czyli

- index.php
- secure.php
- login.php
- common.php
- request.php
- session.php
- user.php

i dziala wszystko OK. teraz jak chce to przerobic, zeby w glownym katalogu byl tylko plik index.php a reszta tak:

- index.php
---/model/
--- common.php
--- request.php
--- session.php
--- user.php

---/pliki/
--- secure.php
--- login.php

pozmienialem sciezki w require, a mimo to po prostu lapie sesji w pliku index.php. cos tam pewnie trzeba zmienic w kodzie, tylko co? chcialbym miec jakis porzadek w tych folderach i w glownym katalogu zostawic tylko index.php, a reszte wladowac do folderow, a z tym sie mecze, ciagle przerabiam i mam juz dosc. nie wiem czemu ta sesja nie wychodzi folder wyzej.
prosze o pomoc
wmatusiak
Ja to robię tak
  1. require_once(dirname(__FILE__) . '/plik_w_tym_samym_katalogu_co_ten_plik.php');
  2. require_once(dirname(__FILE__) . '/../plik_w_katalogu_wyrzej.php);


Jeśli wszędzie w kodzie tak jest to jak by nie łączył te pliki ze sobą będzie ok wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.