Autor wpisu: Jacek Skirzyński, dodany: 07.09.2013 23:18, tagi: php
Pliki projektu mogą być różnie rozlokowane w katalogach a ich łączenie odbywa się z wykorzystaniem funkcji include()
/require()
i ich wariantów *_once()
1. Podawanie ścieżek bezwzględnych zupełnie mija się z celem ponieważ inna będzie na komputerze programisty inna na hostingu. Natomiast zmienianie ich przy przegrywaniu jest stratą czasu i narażaniem się na ewentualne problemy (przy zapomnieniu o zmianie czy błędzie w ścieżce).
Rozwiązaniem tego problemu jest dyrektywa konfiguracyjna include_path
i używanie ścieżek względnych.
Bieżącą wartość dyrektywy można sprawdzić w następujący sposób:
<?php print get_include_path(); // u mnie: .:/usr/share/php:/usr/share/pear
Znak kropki w wyniku odnosi się do bieżącego katalogu, natomiast dwukropek to separator ścieżek (można ustawić ich wiele). /usr/share/php
i /usr/share/pear
to ścieżki, które będą przeszukiwane przy próbie dołączenia plików z użyciem ścieżki względnej.
Jest już przykład odczytania wartość include_path
, teraz czas na zmianę wartości i odpowiedź na pytanie: po co to robić?
Do zmiany wartości służy funkcja set_include_path()
z pomocą wspomnianej funkcji do odczytu bieżącej wartości oraz stałej PATH_SEPARATOR
.
<?php // wariant 1 set_include_path('/jakas/sciezka/do/katalogu'); print get_include_path(); // pokaże: /jakas/sciezka/do/katalogu // wariant 2 set_include_path(get_include_path() . PATH_SEPARATOR . '/jakas/sciezka/do/katalogu'); print get_include_path(); // pokaże: .:/usr/share/php:/usr/share/pear:/jakas/sciezka/do/katalogu
Wariant pierwszy pokazuje jak ustawić tylko swoje wartości include_path
nadpisując przy tym poprzednie (należy uważać z takim użyciem, ponieważ usunięcie znaku kropki może spowodować wiele komplikacji). Wariant drugi jest dużo mniej inwazyjny i zamiast usuwania poprzednich wartości zwyczajnie dodaje do nich nową oddzielając ją za pomocą stałej (separatorem są znaki dwukropka).
Ostatnią kwestią jest przydatność możliwości zmiany tej dyrektywy. Jedną z sytuacji jest używanie pakietów PEAR, których nie ma globalnie na hostingu i jest jakiś problem z ich zainstalowaniem przez administratora. Rozwiązaniem może być utworzenie w obrębie konta własnego zbioru pakietów PEAR i dodanie ścieżki do tego katalogu do include_path
. Późniejsze użycie tych pakietów jest takie samo jak tych dostępnych globalnie.