Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Ścieżki i includowanie
Forum PHP.pl > Forum > PHP
kodereq
Tak jak w temacie - jak najlepiej podawać ścieżki w PHP?

1) 'plik.php'
2) '/plik.php'
3) './plik.php'
4) ścieżka bezwzględna

Proszę o Wasze wypowiedzi.
l0ud
Co za różnica jak wszystkie sposoby działają? tongue.gif

Ja w indeksie deklaruję po prostu stałą ROOT_PATH o wartości ./ i dopisuję wszędzie, gdzie coś dołączam. Jakby zaistniała potrzeba wywołania skryptu w katalogu wyżej to zmieniam ją na ../ i nie ma problemu smile.gif
sowiq
Cytat(l0ud @ 4.05.2009, 12:26:44 ) *
Co za różnica jak wszystkie sposoby działają? tongue.gif
Wbrew pozorom całkiem spora. Bo jeśli dasz ./plik.php to PHP szuka tego pliku tylko w bieżącym katalogu. A jeśli dasz samo plik.php, to jeśli PHP nie znajdzie pliku w bieżącym katalogu, to przeszukuje też wszystkie ścieżki zapisane w systemowej zmiennej PATH. Tak więc /coś.php, ./coś.php i ścieżki bezwzględne działają szybciej niż coś.php
Poza tym podawanie ścieżek bezwzględnych jest bezpieczniejsze - jeśli masz kilka poziomów include'owania, to łatwo o błąd przy podawaniu ścieżek względnych.
kodereq
@sowiq: Jak najlepiej i najpewniej uzyskać ścieżki bezwzględne, tak aby działały na praktycznie każdej platformie? Wystarczą zmienne $_SERVER ? Jeśli tak, to pewniejsze jest DOCUMENT_ROOT czy SCRIPT_FILENAME? A np w Zend framework jak to jest rozwiązane (nie mam pod ręką, potem poszukam)?
sowiq
Poczytaj o:
__FILE__
dirname()" title="Zobacz w manualu PHP" target="_manual
http://www.heavymind.net/zend-framework-tutorial/

Zrób echo dirname(__FILE__); i zobacz co pokaże winksmiley.jpg
kodereq
Zrobiłem mały test, postarałem się zgrupować wszystkie metody uzyskania ścieżki bezwzględnej.

1) dirname(__FILE__): 'C:\xampp\htdocs '
2) $_SERVER['DOCUMENT_ROOT']: 'C:/xampp/htdocs'
3) $_SERVER['SCRIPT_FILENAME']: ' C:/xampp/htdocs/sciezka.php'
4) realpath(): 'C:\xampp\htdocs'

Teraz zapytuję co skuteczniejsze i czy czegoś nie pominąłem?
sowiq
Zrób sobie tak:

plik index.php:
  1. <?php
  2. include './jakis_katalog/inny_katalog/test.php';
  3. ?>


plik jakis_katalog/inny_katalog/test.php:
  1. <?php
  2. echo dirname(__FILE__);
  3. echo $_SERVER['DOCUMENT_ROOT'];
  4. echo $_SERVER['PHP_SELF'];
  5. ?>

Odpal index.php i porównaj wyniki. To powinno rozwiać Twoje wątpliwości.
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.