![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 14.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Oto proste drzewo plikow
../a.php ../b.php ../f/c.php Jak widac pliki a i b sa na tym samym poziomie, a plik c jest w folderze f. Z tego co widze, by sie odwolac do pliku a z pliku b, to w pliku b nalezy zamiescic funkcje include('./a.php'). Aby odwolac sie do pliku a z pliku c, to w pliku c nalezy zamiescic funkcje include('../a.php'). Plik c odwoluje sie rowniez do innych plikow i tu pojawiaja sie bledy w ich znalezieniu (sciezki probowalem wpisywac w roznych konfiguracjach i nic nie wychodzi). Pytanie: Czy istnieje jakis sposob na funkcje podobna do ponizszej, ktora ulatwilaby poruszanie sie miedzy plikami: wazny_folder(jest tam, gdzie znajduje sie plik a); zastosowanie: inlude('wazny_folder('./f/c.php')'); Ten post edytował xix 17.01.2009, 00:52:19 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
nie bardzo rozumiem problemu. chcesz z pliku c odwołać się do plików w folderze wazny_folder.
jeśli tak to w c.php wpisz:
ale jak mówię nie wiem czy o to Ci chodzi. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 14.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wyjasnie moze bardziej w inny sposob o co mi chodzi.
Oto inne drzewo plikow: /a.php /1/b.php /2/c.php /d.php 1 i 2 to foldery plikow "b.php" i "c.php". Plik "c.php" jest skladnikiem pliku "a.php" ("c.php" zawiera sie w "a.php") i jednoczesnie rowniez jest on czescia pliku "b.php". Jezeli zrobie odwolanie do pliku "d.php" z pliku "c.php" poprzez "../", to plik "d.php" nie zostanie znaleziony w pliku "a.php" lub "b.php", bo jest on widziany od strony wlasnie tych plikow "a.php" i "b.php", a nie od strony pliku "c.php", mimo ze tam znajduje sie do niego jedyny odnosnik. Oczywiscie u mnie sprawa jest znacznie bardziej skomplikowana, a nie chce mnozyc plikow, ktore beda wygladaly identycznie, procz zawartych w nich odnosnikow. Jak to rozwiazac? Pomyslalem, ze moze mozna ustalic jakas rozna kotwice/zakladke dla plikow "a.php" i "b.php". Ja tego nie wiem, ale moze jednak jest lepsze odwolanie, niz "../" - na przyklad "%/", gdzie % to folder glowny (odsylanie do tego folderu niezalezne od glebokosci pliku). Ten post edytował xix 17.01.2009, 12:43:42 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 170 Pomógł: 14 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Średnio to wszystko rozumiem ale może zobacz set_include_path()
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ewentualnie możesz stosować ścieżki bezwzględne zamiast względnych.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 14.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem czemu zmieniac globalnie plik php.ini, jezeli zmiany potrzebuje tylko lokalnej dla jednego pliku. Czy nie da sie tego prosciej zrobic? Szukalem z reszta po necie i po ksiazkach i wzoru niestety nie znalazlem jak takie cos przeprowadzic.
Musze zastosowac sciezki bezwzgledne, bo plikow mam duzo i sa przenoszone z miejsca na miejsce. Aby jeszcze rozjasnic jaki jest problem, do zamieszczonego wczesniej drzewa katalogow dodam zawartosc plikow. /a.php Zawartosc pliku a.php z folderu glownego: Kod <?php include('./2/c.php'); ?> widze plik a<br /> /1/b.php Zawartosc pliku b.php z folderu 1 umieszczonego w folderze glownym: Kod <?php include('../2/c.php'); ?> widze plik b<br /> /2/c.php Zawartosc pliku c.php z folderu 2 umieszczonego w folderze glownym: Kod <?php include('./d.php'); ?> widze plik c<br /> /d.php Zawartosc pliku d.php z folderu glownego: Kod <?php echo "widze plik d<br />"; ?> po wyswietleniu pliku a.php w przegladarce otrzymam wynik: Cytat widze plik d widze plik c widze plik a po wyswietleniu pliku b.php w przegladarcze otrzymam wynik: Cytat Warning: main(./d.php): failed to open stream: No such file or directory in... Warning: main(): Failed opening... widze plik c widze plik b Jezeli zmienie w pliku "c.php" sciezke "include('./d.php');" na "include('../d.php');" to blad nie pojawia sie juz przy wyswietleniu pliku "b.php", ale pojawia sie przy wyswietleniu pliku "a.php". Sprawa by byla rozwiazana, jesli cos by wysylalo do folderu glownego na przyklad w taki sposob: "include('%/d.php');" % oznacza - niezaleznie gdzie jestes szukaj plik zaczynajac od folderu glownego / folderu zakladki / folderu kotwicy... Ten post edytował xix 17.01.2009, 14:30:50 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Zrób sobie stałą, która zawiera bezwzględną ścieżkę do całego skryptu, np.
Stałą możesz sobie deklarować w jakimś konkretnym pliku i go dołączać. Najpewniejszy sposób. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 14.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jest to jakies rozwiazanie, chociaz na pewno ladniejsze bylo by z jakims % na przyklad. Niestety "../" wysyla tylko folder wyzej, wiec fajnie by bylo, gdyby jeszcze istnialo cos typu "%/" wysylajace do glownego folderu. Juz jeden plik ze stalymi mam, wiec tam doloze ta nowa.
W praktyce, do powyzszego drzewka dodalem jeszcze jeden plik "e.php" z ponizsza zawartoscia: Kod <?php define('KOTWICA','C:\usr\apache\httpd\html/'); ?> do pliku "a.php" dodalem nowa linie: Kod <?php incude('./e.php'); include('./2/c.php'); ?> widze plik a do pliku "b.php" dodalem nowa linie: Kod <?php incude('../e.php'); include('../2/c.php'); ?> widze plik b a plik "c.php" zostal zmieniony tak: Kod <?php include KOTWICA.'d.php'; ?> widze plik c Plik "d.php" nie ulegl zmianie. Uwaga na ilosc kropek przy linkach! Ten post edytował xix 17.01.2009, 18:03:05 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Jest to jakies rozwiazanie, chociaz na pewno ladniejsze bylo by z jakims % na przyklad. Niestety "../" wysyla tylko folder wyzej, wiec fajnie by bylo, gdyby jeszcze istnialo cos typu "%/" wysylajace do glownego folderu. Ładniejsze tak, ale nie byłoby już tak wydajne i czytelne, ponieważ wczytać stałą jest dużo szybciej niż obrabiać łańcuch w poszukiwaniu wybranego przez Ciebie tekstu. Poza tym, inny programista musiałby się domyślać, o co chodzi. ![]() Poza tym, musiałbyś - w pewnym sensie - wynaleźć koło na nowo i pisać drugi raz coś, co tak naprawdę istnieje - stała + nazwa pliku. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 14:26 |