Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> instrukcja include - jak to wkońcu jest
wiruswww
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


Witam.
Nie od dziś już piszę w php ale natknąłem się na pewien problem, i mam pytanie jak to w końcu jest z include jeżeli mamy pewne drzewo katalogowe.
Załóżmy że:


  1. katalog
  2. katalog1
  3. plik1.php
  4. plik.php
  5. index.php


w pliku index.php mamy instrukcje
[PHP] index.php - pobierz, plaintext
  1. include('katalog/plik.php')
[PHP] index.php - pobierz, plaintext
i wszystko jest ok. Jak teraz powinna wyglądać instrukcja include w pliku plik.php aby załączyć plik1.php:
[PHP] plik.php - pobierz, plaintext
  1. include('katalog1/plik1.php')
[PHP] plik.php - pobierz, plaintext
czy
[PHP] plik.php - pobierz, plaintext
  1. include('katalog/katalog1/plik1.php')
[PHP] plik.php - pobierz, plaintext
Pytanie wynika z stąd iż pierwsze rozwiązanie drugie poprawnie na mojej lokalnej maszynie natomiast rozwiązanie pierwsze znalazłem w osCommerce, a nie działa u mnie. Jak to w końcu powinno być poprawnie? Może mam coś nie tak w konfiguracji PHP? Logika nibyjest prosta, do index wrzuca jest wszystko co jest w plik.php więc niby rozwiązanie drugie na logike wydaje się być poprawne. Dlaczego więc w osCommerce zrobione jest inaczej? Jak w końcu jest naprawdę z plikami includowanymi?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
lipiec
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 23.01.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(wiruswww @ 23.01.2010, 22:15:37 ) *
Witam.
Nie od dziś już piszę w php ale natknąłem się na pewien problem, i mam pytanie jak to w końcu jest z include jeżeli mamy pewne drzewo katalogowe.
Załóżmy że:


  1. katalog
  2. katalog1
  3. plik1.php
  4. plik.php
  5. index.php


w pliku index.php mamy instrukcje
[PHP] index.php - pobierz, plaintext
  1. include('katalog/plik.php')
[PHP] index.php - pobierz, plaintext
i wszystko jest ok. Jak teraz powinna wyglądać instrukcja include w pliku plik.php aby załączyć plik1.php:
[PHP] plik.php - pobierz, plaintext
  1. include('katalog1/plik1.php')
[PHP] plik.php - pobierz, plaintext
czy
[PHP] plik.php - pobierz, plaintext
  1. include('katalog/katalog1/plik1.php')
[PHP] plik.php - pobierz, plaintext
Pytanie wynika z stąd iż pierwsze rozwiązanie drugie poprawnie na mojej lokalnej maszynie natomiast rozwiązanie pierwsze znalazłem w osCommerce, a nie działa u mnie. Jak to w końcu powinno być poprawnie? Może mam coś nie tak w konfiguracji PHP? Logika nibyjest prosta, do index wrzuca jest wszystko co jest w plik.php więc niby rozwiązanie drugie na logike wydaje się być poprawne. Dlaczego więc w osCommerce zrobione jest inaczej? Jak w końcu jest naprawdę z plikami includowanymi?

Zauważ, że plik.php siedzi w katalogu "katalog1", w związku z tym, jeśli w plik.php ustawisz ściężkę includowania na "katalog/katalog1/plik1.php" to zostanie to potraktowane tak, że skrypt zacznie Tobie szukać takiej ścieżki: "katalog/katalog/katalog1/plik1.php".
Mógłbyś jeszcze odwołać się do pliku "plik1.php" w sposób taki: "../katalog1/plik1.php" - tylko po co?
Wydaję mi się, że tylko takie rozwiązanie jest najlepsze: "katalog1/plik1.php".
Go to the top of the page
+Quote Post
wiruswww
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


'plik.php' siedzi w 'katalog' nie w 'katalog1'
niby wszystko ok, tylko dlaczego nie działa mi to w ten sposób? zwalona konfiguracja apache? php? Przypomina mi się ze już chyba miałem kiedyś z tym problem przy małym skrypcie ale pozmieniałem parę wpisuwi było ok, i jakoś nie przywiązałem do tego większej uwagi a teraz już chce to wyjaśnić do końca.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Odpowiedź jest prosta... zrezygnuj z ścieżek względnych na rzecz bezwzględnych... nigdy nie będziesz miał problemu wynikającego z kontekstu użycia ścieżki względnej. A żeby nie pisać każdorazowo:
Kod
/path/to/my/project/root/dir
Możesz sobie zadeklarować jakąś stałą na samym początku index.php:
  1. define('ROOT_DIR', dirname(__FILE__));
A potem przy podawaniu ścieżek dawać:
  1. require ROOT_DIR . '/path/to/file';
Go to the top of the page
+Quote Post
wiruswww
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


ok, jak najbardziej ok, ścieżki bezwzględne są super, ale moja dociekliwość nie daje mi spokoju, jak to powinno być w rzeczywistość z tym include?
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Przed każdym wywołaniem include daj sobie:
To będziesz wiedział dokładnie w jakim miejscu w systemie plików obecnie się znajdujesz = będziesz wiedział na co wskazuje dana ścieżka względna. winksmiley.jpg
Go to the top of the page
+Quote Post
wiruswww
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 23.01.2010, 23:28:52 ) *
Przed każdym wywołaniem include daj sobie:
To będziesz wiedział dokładnie w jakim miejscu w systemie plików obecnie się znajdujesz = będziesz wiedział na co wskazuje dana ścieżka względna. winksmiley.jpg


Przed jednym i drugi include jest to samo. Includowanie nie zmienia miejsca w drzewie katalogowym. Ale to nie wyjaśnia dlaczego w gotowym skrypcie osCommerce zastosowane jest rozwiązanie które teoretycznie powinno działać, a nie działa, a drugie rozwiązanie działa, a teoretycznie nie powinno. To moja konfiguracja serwera jest skopana, czy chłopaki od osCommerce mają coś nie halo?
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Być może w osc zmodyfikowane jest include_path
Go to the top of the page
+Quote Post
wiruswww
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


Raczej nie jest. A jak to jest u was z tym include, która konstrukcja jest poprawna?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:06