Aloittelen kotisivujen tekemistä php:llä. Tuli kuitenkin ongelma include()-funktion kanssa.
Jos teen kotisivuilleni linkin, esimerkiksi <a href="/index.php"></a> eli käytän tuollaista absoluuttista polkua, linkki toimii niin kuin pitääkin:
domainnimi.net/index.php latautuu, vaikka tiedosto ei itse asiassa palvelimella sijaitsekaan juuressa vaan polku on palvelimella /home/domainnimi/domains/domainnimi.net/
Nyt kun käytän include()-funktiota, ei se toimikaan samalla tavalla kuin linkit absoluuttisen polun kanssa, vaan jos sanon include("/head.php"); ei includetukaan /home/domainnimi/domains/domainnimi.net/
Nyt onkin kysymys, onko jotenkin mahdollista sanoa php-tulkille, että includeta tiedosto käyttämällä web-sivujen juurikansiota juurihakemistona, äläkä aivan alimmaista palvelimen juurihakemistoa?
Vai mikä olisi paras tapa includettaa tiedosto, ettei johonkin tiedostoon tarvitse laittaa include("head.php") ja toisessa kansiossa majailevaan tiedostoon include("../../head.php") ja kolmanteen ties mitä... Onko parasta vaan laittaa kaikkiin absoluuttinen polku include("/home/domainnimi/domains/domainnimi.
Krisse7 kirjoitti:
tämäkin on kai "niin kuin pitääkin" toimintaa.
Niin on. URL ja hakemistopolku ovat kaksi täysin eri asiaa.
Krisse7 kirjoitti:
onko jotenkin mahdollista sanoa php-tulkille, että includeta tiedosto käyttämällä web-sivujen juurikansiota juurihakemistona, äläkä aivan alimmaista palvelimen juurihakemistoa?
Palvelimen document root löytyy PHP:n $_SERVER['DOCUMENT_ROOT'] -muuttujasta.
Krisse7 kirjoitti:
Vai mikä olisi paras tapa includettaa tiedosto
Itse suosin suhteellisia polkuja (eli juurikin noita ../../), koska tällöin skriptin ei tarvitse olla juuri document rootissa, vaan sen voi sijoittaa hakemistohierarkiassa muuallekin ilman muutoksia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.