Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Ścieżki i includowanie, 'plik.php', '/plik.php', './plik.php' czy bezw
kodereq
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 27.02.2009

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


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.

Ten post edytował kodereq 4.05.2009, 11:15:43
Go to the top of the page
+Quote Post
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


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.
Go to the top of the page
+Quote Post
kodereq
post
Post #4





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 27.02.2009

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


@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)?

Ten post edytował kodereq 4.05.2009, 11:52:11
Go to the top of the page
+Quote Post
sowiq
post
Post #5





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


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

Ten post edytował sowiq 4.05.2009, 12:04:38
Go to the top of the page
+Quote Post
kodereq
post
Post #6





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 27.02.2009

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


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?

Ten post edytował kodereq 4.05.2009, 13:37:54
Go to the top of the page
+Quote Post
sowiq
post
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


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.

Ten post edytował sowiq 4.05.2009, 16:25:27
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 - 13:46