Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Includowanie plików
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam, mam strukturę katalogów:
+ katalog_glowny
- katalog_1
- katalog_2
- katalog_3

w katalogu_glownym mam skrypt w którym chciałbym includować plik z katalogu_1

zrobiłem tak
<?
include '/katalog_1/plik.php';
?>

niestety bez zamierzonego efektu, co zrobiłem źle?
Tomplus
Nie daje się znaku / na początku ścieżki w include ponieważ informujesz parser że chcesz wczytać plik zaczynając od roota systemu, a nie miejsca w którym znajdujesz się w danej chwili.

  1. <?php
  2. include 'katalog_1/plik.php';
  3. ?>


Możesz również wykorzystać stałą __DIR__, który niesie informacje wszystkich katalogach przed twoim katalogiem o nazwie: katalog_glowny, ale włącznie z nim.

  1. <?php
  2. include __DIR__.'/katalog_1/plik.php';
  3. ?>
Rysh
  1. include('./katalog_1/plik.php');

Kropka jest bardzo istotna w tym przypadku. Bez kropki oznacza to że includujesz plik z głównego katalogu systemu plików, z kropką z katalogu w którym wykonywany jest plik.

Edit: wyprzedziłeś mnie smile.gif
krzesik
niestety żaden z podanych wyżej sposobów nie działa, ale natknąłem się jeszcze na jedną sprawę. W moim hostingu mam wyłączone:
- allow_url_fopen
- allow_url_include


czy to czasem nie jest winowajca?
Rysh
Cytat(krzesik @ 8.06.2016, 23:05:44 ) *
niestety żaden z podanych wyżej sposobów nie działa, ale natknąłem się jeszcze na jedną sprawę. W moim hostingu mam wyłączone:
- allow_url_fopen
- allow_url_include


czy to czasem nie jest winowajca?

Nie. Sprawdź sobie czy plik istnieje. Użyj funkcji file_exists oraz var_dump.
com
Cytat
- allow_url_fopen
- allow_url_include

to ma znaczenia jak pytasz z zewnątrz wink.gif
Tomplus
Bo to raz było tak, że człowiek myśli że ścieżka jest prawidłowa, a okazuje się że jest jakaś literówka, brak slasha czy kropki itd.

Sprawdź najpierw czy jesteś w dobrym katalogu:

np. prostą funkcją z manuala:
  1. $d = dir("./");
  2. echo "Handle: " . $d->handle . "\n";
  3. echo "Path: " . $d->path . "\n";
  4. while (false !== ($entry = $d->read())) {
  5. echo $entry."\n";
  6. }
  7. $d->close();


Jeżeli masz pliki i foldery z katalogu katalog_glowny to prawidłowo, możesz potem sprawdzić i zmienić ścieżkę na ./katalog_1

Jeżeli nie, to może okazuje się że jesteś za wysoko w strukturze katalogów i należy się cofnąć czyli wpisać:

../katalog_1/, dwie kropki to przejście do katalogu niżej i można je stosować dowoli np. ../../../../ to zejdziemy o 4 katalogi niżej w strukturze [jeżeli jest taka możliwość].
viking
Albo za pomocą http://php.net/manual/en/function.chdir.php zmienić katalog.
Pyton_000
chdir to zuo smile.gif

Kod
include __DIR__.'/katalog_1/plik.php';
viking
Dlaczego zło? Porządkuje sprawę punktu wejścia i odniesień w aplikacji.
Przykładowo jest używany domyślnie w https://github.com/zendframework/ZendSkelet...ublic/index.php
Oczywiście jak zawsze wszystko należy używać z głową. Inaczej można sobie zrobić krzywdę nawet zwykłym include jak widać po pierwszym temacie.
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.