include()

  • Onderwerp starter Onderwerp starter keej
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

keej

Gebruiker
Lid geworden
17 aug 2007
Berichten
279
Ik heb een probleem met include() in PHP.

Het betreft verwijzing naar relatieve url's in verschillende mappen waarbij meerdere includes in elkaar voorkomen.

Ergens heb ik eens gelezen, maar ik weet niet meer waar, dat wanneer bijvoorbeeld twee includes in elkaar voorkomen er voor de tweede include() eerst gekeken wordt naar een bestand met url ten opzichte van de hoofdfile waar alle includes uiteindelijk in terecht komen en pas daarna naar een bestand ten opzichte van de locatie van de eerste geïnclude file.

In mijn geval gaat het om de tweede check: dus alles zou goed moeten werken, op voorwaarde dat in de map van mijn hoofdfile geen ander bestand met dezelfde naam als het bestand waar voor de tweede include() naar verwezen wordt voorkomt.

Als ik dit uittest op mijn eigen server, dan gaat alles goed. Als ik de bestanden echter upload naar mijn ISP dan werkt het niet, dus daar wordt blijkbaar de tweede check niet uitgevoerd.

Nu vraag ik mij af: aan wat ligt dit precies. Ligt het aan de versie van PHP die geïnstalleerd is? Als ik weet hoe het precies komt kan ik dan mss mijn ISP erover contacteren. De verwijzingen aanpassen is om duidelijke redenen (meerdere keren dezelfde php-file gebruiken vanuit andere mappen) geen optie. Alles in één map stoppen wel, maar dat doe ik liever niet.
 
Heb je een stukje code waarin het probleem voorkomt?

Het kan zijn dat het aan de PHP versie ligt, dan zul je jouw versie moeten vergelijken met die van je host. Als jij een latere versie gebruikt kan het inderdaad fouten opleveren.

Toch denk ik niet dat je hosting gauw over zal gaan op PHP5, de meeste hostingbedrijven kijken eerst de kat uit de boom...
 
Een stukje code geven zal wat moeilijk gaan aangezien het meerdere files in een structuur betreft, maar ik denk dat ik het goed beschreven heb. Ik ben zeker dat de fout ligt bij het beschreven probleem. Ik heb nagegaan met test-bestanden waar het precies foutloopt.

Is een probleem enkel mogelijk als mijn isp een oudere versie heeft? Ik ben het gaan bekijken en de versie is versie 5, wat toch wel de recentste is zeker. Mijn versie is 5.2.3; maakt het een verschil als mijn isp een lagere 5-versie heeft?

Mysql is bij mijn isp wel nog versie 4 (bij andere pakketten is het 5) maar dat maakt niets uit, of wel?
 
De PHP-versie zal niet zo heel veel verschil maken wanneer het eerste cijfer gelijk is. MySQL heeft er inderdaad niets mee te maken.

Ik zie dat je het over relatieve paden hebt, wellicht zit de fout daarin. Gebruik bij een include eens het absolute pad en kijk dan of het nogsteeds voorkomt.
 
Relatieve paden=fout? Mag ik die dan niet gebruiken?

Absolute paden zou inderdaad een oplossing zijn. Maar kunnen absolute paden ten opzichte van de root van de site? In php zelf ben ik een beginneling, maar ik denk dat het niet kan. Anders is het geen optie aangezien de site dan niet meer gewoon te verplaatsen is. Met de ingebouwde variabelen om een pad op te vragen heb ik ook al problemen gehad, hoewel ik niet meer precies weet hoe dat zat, mss bekijk ik dat wel nog eens.

Feit is dat het het gemakkelijkst en elegantst is als het werkt zoals het nu is, dus met de dubbele check, wat dus bij mij ook lukt. (Dat die dubbele check uitgevoerd wordt weet ik doordat ik al eens een ander bestand met dezelfde naam als de tweede include in de hoofdmap plaatste en dan merkte dat inderdaad dan dat bestand gebruikt werd.) Nou ja de laatste check vind ik persoonlijk eigenlijk de meest logische, maar ja dat is niet meteen mijn punt. Ik heb gewoon graag voor alles een verklaring en dan vind ik het feit dat het bij mijn eigen (test-)server WEL werkt en niet bij die van mijn isp heel vreemd. Als het niet aan verschil in de php-versie ligt, aan wat ligt het dan wel???

Een oplossing (voorlopig alles in één map plaatsen voor zover nodig) kan ik nu voorlopig wel toepassen, maar aangezien ik het niet zo heb voor het ontwijken van problemen die ik niet begrijp zou het tof zijn moest iemand dit probleem, verschil eigenlijk tussen mijn eigen server en die van mijn isp, kennen en/of weten hoe dit komt.;)
 
Laatst bewerkt:
Je kunt met $_SERVER-variabelen aardig wat dingen achterhalen ;)

Hier vindt je een lijstje, het makkelijkste vind ik altijd om gewoon een phpinfo(); bestand te maken (Of op te zoeken ;)) en dan kun je zo aflezen wat ze precies weergeven.
 
keej ;) dank je wel. ik verdiep er mij later wel eens in, druk leven he :).

Met die rare verschillen ga ik moeten leren leven zeker, vandaar dat het mss allicht gebruikelijker is om absolute url's te gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan