Opis
Artykuł opisuje jak zadeklarować ścieżkę bezwględną podczas includowania (załączania) zawartości innego pliku do kolejnego.
Scenariusz
Z pewnością, każdy z was już doświadczył problemu jakim niewątpliwie jest odwołanie do innego pliku względem innej lokalizacji.
Przypuśćmy, że posiadamy plik o nazwie config.php, który includuje plik baza.php (w tym samym katalogu), czyli:
include('baza.php');
Teraz chcemy zaincludować plik config.php do naszego głównej pliku index.php. Po tej czynności dostaniemy błąd includowania, ponieważ zaciągamy plik config.php, co oznacza, że jego include dla baza.php musi być zaktualizowane, np do:
include('../baza.php');
Teraz przypuśćmy, że mamy folder o nazwie admin, w którym również posiadamy (ale osobny) plik index.php i oczywiście również chcemy mieć dostęp do pliku config.php.
Problem
Narodził się problem, ponieważ includujemy plik config.php, który posiada deklaracje include wewnątrz niego z ścieżką względną dla aktualnie użytego indexu.php. Co więc potrzebujemy zrobić w takiej sytuacji? Na pewno nie deklarujemy ścieżki w stylu: http://www... , bądź: $_SERVER[DOCUMENT_ROOT], mamy na to dużo lepszy i elastyczniejszy sposób obsługi.
Rozwiązanie
Odpowiedź na naszą zagadkę jest funkcja... (dalsza część artykułu załączona w kodzie)
Listing
include(dirname(__FILE__).'/baza.php');
Dzięki temu otrzymujemy ścieźkę bezwględną, z uwzględnieniem katalogu który jest tuż nad baza.php plikiem.
Jeśli potrzebujemy wejść jeden katalog powyżej, wystarczy dodać:
include(dirname(dirname(__FILE__)).'/baza.php');
Ranga: Administrator serwisu Punktów: 0