Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Plik z wcześniejszego katalogu
Forum PHP.pl > Forum > Przedszkole
klapaucius
Cześc! Chciałem się zapytać jednej rzeczy, mianowicie czy można zrobić coś takiego jak np zaincludować jakiś plik, który jest w "wyższym"(wcześniejszym) katalogu. Czyli jeśli np mamy plik www/strona/strona.php i chcemy zaincludować inny plik, który znajduje się w katalogu www to jak sie do niego odwołać? Wiem ze mozna by zrobic cos takiego jak np. include('www.adresstrony/www/pliczek_do_zaincludowania.php') ale wtedy nie bedzie to dość optymalne rozwiązanie, gdyż jeśli np adres strony się zmieni to nie będzie to już działało.
Proszę o pomoc. Pozdrawiam!
InosU31
spróbuj :

  1. /www/strona.php
  2.  
  3. lub
  4.  
  5.  
  6. ./www/strona.php



pozdrawiam
thek
A zwykłego cofania poprzez ../ nie znamy? winksmiley.jpg
InosU31
Cytat(thek @ 15.01.2010, 20:34:27 ) *
A zwykłego cofania poprzez ../ nie znamy? winksmiley.jpg


u mnie to nie zadzialalo jak chialem zrobic wyjscie z katalogu :

/page/folder1/index.php

do

/page/folder2/index2.php

pozdrawiam
klapaucius
Cytat(InosU31 @ 15.01.2010, 20:37:28 ) *
u mnie to nie zadzialalo jak chialem zrobic wyjscie z katalogu :

/page/folder1/index.php

do

/page/folder2/index2.php

pozdrawiam

No własnie u mie też to nie działa. Moglby to ktos objasnic?
InosU31
probowales zrobic tak jak ja ci napisalem czyli /www/strona.php lub z kropka: ./www/strona.php ?
neverever
jeśli chcesz do katalogu poziom wyżej, to: ../plik
jeżeli do katalogu 2 poziomy wyżej, to: ../../plik
jeżeli do katalogu równorzędnego, to ../katalog/plik
klapaucius
dzieki piekne! teraz działa! Bardzo dziękuje!!
@edit
oj jednak nie jest tak pięknie... ;/
chce w pliku 'layout.php' zaincludowac plik 'pozdrowionka.php', znajdująca się o 2 katalogi wyżej. Robię to w ten sposób: include('../../pozdrowionka.php'); Jednak wyskakują mi takie błędy:

Warning: include(../../pozdrowionka.php) [function.include]: failed to open stream: No such file or directory in /var/www/testots/layouts/tibiacom/layout.php on line 136

Warning: include() [function.include]: Failed opening '../../pozdrowionka.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/testots/layouts/tibiacom/layout.php on line 136


Dlaczego?
neverever
jeżeli jesteś pewien, że ścieżki są prawidłowe i plik includowany znajduje się faktycznie 2 katalogi wyżej
...to zgaduję - zagnieżdżenia, może system szablonów.

Z tymi zagnieżdżeniami to podam na przykładzie:

jest sobie taka struktura katalogowa począwszy od roota:

index.php
a/index1.php
a/b/index2.php

teraz robimy taki myk, że w pliku index1.php includujemy plik index2.php, który z kolei includuje plik index.php z katalogu głównego.

plik index.php
  1. echo 'udało się!';


plik index1.php
  1. include 'b/index2.php';


plik index2.php
  1. include '../../index.php';


Niby ścieżki się zgadzają ...a jednak nie działa?

Ano dzieje się tak, bo kod jest dołączany przed wykonaniem.
Czyli tutaj choć ścieżki wyglądają poprawnie, taka operacja się nie powiedzie ...bo błąd wywali include z pliku index2.php - to za sprawą punktu odniesienia. Plik ten jest bowiem wcześniej includowany do pliku katalog wyżej ...i ścieżka przestaje się z tego powodu zgadzać.

ale jak już poprawisz plik index2.php w taki sposób
  1. include '../index.php';
to zacznie działac.

Zgaduję, że tej sytuacji ma miejsce trochę podobna sytuacja. czarodziej.gif



klapaucius
Cytat(neverever @ 15.01.2010, 22:32:55 ) *
jeżeli jesteś pewien, że ścieżki są prawidłowe i plik includowany znajduje się faktycznie 2 katalogi wyżej
...to zgaduję - zagnieżdżenia, może system szablonów.

Z tymi zagnieżdżeniami to podam na przykładzie:

jest sobie taka struktura katalogowa począwszy od roota:

index.php
a/index1.php
a/b/index2.php

teraz robimy taki myk, że w pliku index1.php includujemy plik index2.php, który z kolei includuje plik index.php z katalogu głównego.

plik index.php
  1. echo 'udało się!';


plik index1.php
  1. include 'b/index2.php';


plik index2.php
  1. include '../../index.php';


Niby ścieżki się zgadzają ...a jednak nie działa?

Ano dzieje się tak, bo kod jest dołączany przed wykonaniem.
Czyli tutaj choć ścieżki wyglądają poprawnie, taka operacja się nie powiedzie ...bo błąd wywali include z pliku index2.php - to za sprawą punktu odniesienia. Plik ten jest bowiem wcześniej includowany do pliku katalog wyżej ...i ścieżka przestaje się z tego powodu zgadzać.

ale jak już poprawisz plik index2.php w taki sposób
  1. include '../index.php';
to zacznie działac.

Zgaduję, że tej sytuacji ma miejsce trochę podobna sytuacja. czarodziej.gif

Hmm... No faktycznie ten mój plik layout.php, jest odpowiedzialny za szablon strony i jest on już includowany przez inny plik wcześniej i może dojść faktycznie do jakiejś kolizji. Ale siedzie nad tym sporo czasu i za cholere nie moge nic wymyślić zeby to jakos naprawic w moim przypadku... Tracę wogole juz nadzieje ze sie tak da zrobic... Czy mozna w mojej sytuacji wykombninowac cos? Bardzo prosze o pomoc!
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.