Problém s relatívnymi cestami v PHP pri include
Mám súbor index.php v adresári /abc/ na serveri. V adresári /abc/def/ mám tiež index.php. Z obidvoch týchto index.php pomocou príkazu include volám súbor main.php. V súbore main.php sa odvolávam na ďalší súbor main0.php, ktorý je v inom adresári ako je main.php. Problém spočíva v tom, že nemôžem použiť relatívne cesty v súbore main.php, pretože to bude fungovať z /abc/index.php, ale nie z /abc/def/index.php alebo naopak. Súbory sa nesmú nachádzať inde ako sú umiestnené. Ako upraviť main.php, aby bol prenositeľný celý obsah servera na iný server? Čiže nesmie sa použiť cesta ako localhost a podobne, lebo z internetového servera by to už nebežalo.
Moc jsem to nepochopil, ale snad ti pomůže, že nejdřív se hledá v adresáři s prováděným skriptem, až potom v adresáři s tim includovanym souborem. Aspoň myslim .
// update: Beru zpět, už jsem to pochopil...
Toto je tak triviální, že to vím i já.
Klíčem jsou relativní cesty.
Tzn. nezapisuješ/nepoužíváš úplnou cestu, ale relativní.
Například říkáš: V adresáři o jednu úroveň zpět je ten a ten konkrétní soubor v tom a tom adresáři:
Eh.. nebo to není to co myslíš ?
já to pochopil tak, že includuje do includovaného a ten druhý includovaný je v jiném adresáři tedy např.
<body>
<?php include "main.php"; (a v main.php se includuje neco.php) ?>
</body>
co to includovat po jednom do toho prvního?
<body>
<?php
include "main.php";
include "neco.php";
?>
</body>
Pochopil jsem, že má takouvouto adresářovou strukturu:
Pre inkludovanie ďalších súborov z main.php môžeš použiť absolútnu cestu, ktorú si môžeš vytvoriť za behu skriptu použitím:
Už jsme tě vyhlíželi