Tja, naar aanleiding van dit topic http://www.phphulp.nl/php/forum/topic/bestanden-uit-een-andere-map-includen/79722/

... toch even een paar vragen over paden.

Als je bestanden include of requiret, maakt het dan verschil of je een relatief of absoluut pad gebruikt?

Noppes zegt namelijk in dat topic: "files include je niet door opgave van relatief path maar absoluut path!"

Vandaar mijn vraag.
Als ze maar gevonden worden lijkt mij het belangrijkst.
Dat spreekt voor zich. Maar wat ik wil weten, is of er verschil is tussen:

include '/home/var/www/mijnproject/library/config.php';

en

include 'library/config.php';

of include '../../library/config.php';

Maakt dit iets uit qua veiligheid, of qua snelheid misschien? Waarom zegt Noppes dat je absolute paden moet gebruiken. Hij zal het toch niet voor niks zeggen lijkt me.
stuur eens een pm. Dan ben je zeker dat hij het leest en dan kan hij uitleg geven. ik ben ook benieuwd.
Heb gestuurd. Mocht iemand anders ondertussen het antwoord weten dan hoor ik het graag.
Als je de includes vanuit elke submap moet kunnen aanroepen, dan zijn absolute paden handig.
Stel je hebt een /includes/main.class.php en een /includes/config.php. De config wordt vanuit de main.class.php aangeroepen, maar in elke andere source roep je alleen de main.class.php aan.
Dan kun je de root map bepalen door het volgende te doen in de main.class.php.
<?
define("__documentroot__", str_replace("/includes/main.class.php", "", __FILE__));
include(__documentroot__."/includes/config.php");
...
?>

Op deze manier hoef je nooit het pad echt te benoemen, maar kun je toch de main.class.php overal vandaan aanroepen. Als er namelijk alleen include("./config.php"); in de main.class.php zou staan, kun je hem alleen maar vanuit de /includes directory invoegen.
Er is voor zover ik weet geen snelheidswinst te behalen bij absoluut of relatief benoemen.
Oké, maar als ik je goed begrijp mag het dus beiden. Het één is dus niet sneller of veiliger dan het andere? Als ik vanuit mijn publieke www map in de index.php een bestand uit het privé deel van de server wil includen dan is het handig om gewoon dit te doen namelijk.

include '../../private/index.php';

Door een relatief/absoluut path te gebruiken maak je iets niet veiliger.
Een beetje off-topic, maar in je HTML zijn absolute paden sowieso veel handiger, omdat je routes/urls kan veranderen zonder alle links te hoeven aanpassen.
@Pim: ik denk dat je dan relatieve paden bedoelt.
? Nee, dat bedoel ik niet

[size=xsmall]Toevoeging op 21/08/2011 21:18:20:[/size]

Als je dynamische URLs gebruikt, staat je structuur van statische bestanden volledig los van je pagina's, dan zijn absolute paden noodzakelijk.

Reageren