[php] include / .htaccess? / $DOCUMENT_ROOT;

Pagina: 1
Acties:
  • 303 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik heb vandaag een, niet noodzakelijkerwijs verder te noemen site, omgezet van de ene host naar een andere. Alles ging redelijk vlekkeloos, omdat e.e.a. wel goed in elkaar zat (bijna alle instellingen in 1 bestand, en hiervanuit de site opgebouwd), maar 1 ding ging niet goed, dat was de variabele $DOCUMENT_ROOT. Met de komst van superglobals heet dat natuurlijk $_SERVER['DOCUMENT_ROOT'], maar beide geven op de nieuwe server, als ik ze echo hetzelfde (dus daarin ligt het probleem niet!).

De bedoeling van de makers van de site (ik heb em in beheer overgenomen) was om niet een relatieve, maar een absolute include te maken. Dus iets als:

PHP:
1
include $DOCUMENT_ROOT.'/inhoud/blaat/blaat.php';


Probleem is echter dat $DOCUMENT_ROOT bij de host pcextreme.nl, het volgende geeft als inhoud: /var/www (dus deze omgevingsvariabele werkt), maar als ik (met opzet) een parse error maak, geeft hij dit:

Parse error: parse error, expecting `','' or `';'' in /home/mijndomein.net/www/index.php on line 62
Hieruit maak ik op dat de absolute url /home/mijndomijn.net/www is, in plaats van /var/www, wat ik uit de $DOCUMENT_ROOT variabele haal.

Het vervelende bij de nieuwe host is dus dat de $DOCUMENT_ROOT niet overeenkomt met de daadwerkelijke document-root van mijn domein. /home/mijndomein/www/ werkt wel bij een include, maar /var/www werkt niet...

Nu is in veel scripts van de site, gebruik gemaakt van iets als:

PHP:
1
include $DOCUMENT_ROOT.'/map1/map2/bestand1.php';

Bij de oude host, was de document-rootvariabele wel geldig, maar hier niet. Mijn vraag is, of het mogelijk is om de omgevingsvariabele $DOCUMENT_ROOT bijvoorbeeld via .htaccess, te wijzigen in de juiste?

Nu heb ik namelijk iets lelijks gedaan:
ik heb in header.php (die in veel pagina's wordt geinclude) iets gezet als dit:
PHP:
1
$DOCUMENT_ROOT='/home/mijndomein.net';


zodat de scripts wel werken (en naast header.php moest ik het ook in sommige andere bestanden doen, omdat header.php niet overal op de site wordt aangeroepen).

Vandaar mijn vraag of er ook een oplossing is die netter is; waarbij $DOCUMENT_ROOT weer de geldige verwijzing heeft (dus met /home/mijndomein.net

Ik heb namelijk eigenlijk geen zin in het aanpassen van alle scripts.

Alvast bedankt!

[ Voor 9% gewijzigd door Verwijderd op 11-05-2004 19:11 . Reden: php tags gebruiken :-) ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ten eerste moet je zoals je zelf zegt sowieso $_SERVER gebruiken. En verder, wat is er mis met dit?
PHP:
1
2
3
<?
include('/map1/map2/bestand1.php');
?>

Die voorafgaande slash geeft aan dattie in de root moet beginnen...

[ Voor 7% gewijzigd door NMe op 11-05-2004 19:15 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Niets mis mee, maar de hele site met best behoorlijk veel pagina's, heeft includes die er zo uitzien:

PHP:
1
include $DOCUMENT_ROOT.'/map1/bestand.php';


We weten allemaal dat $DOCUMENT_ROOT; opzich niet meer goed is, en $_SERVER['DOCUMENT_ROOT'] moet zijn, maar dat is nu niet eens echt het probleem.

Het probleem is dat ik geen include kan verzinnen op mijn nieuwe server, waarbij ik iets doe met de $_SERVER['DOCUMENT_ROOT'] superglobal, omdat deze /var/www als inhoud heeft (ik vermoed de document root van pcextreme.nl of zo), maar niet de documentroot van mijn site.

En jij vroeg naar het probleem met include '/map1/bestand.php';
het probleem is dat ik dan nogal wat bestanden moet aanpassen waarin die andere manier van includes staan, met $DOCUMENT_ROOT;

Daarom vroeg ik me af of je dat niet op een andere manier (ik dacht aan .htaccess om document_root hiermee in te stellen) kon instellen.

Nu is de inhoud van $_SERVER['DOCUMENT_ROOT']; >> /var/www
het moet zijn: /home/brandhout.net/www

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Download Textpad, open daar alle source files in, en vervang dan in één keer "include $DOCUMENT_ROOT." door "include " (maar dan zonder quotes). Probleem opgelost... :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Je vindt 't teveel werk om 't aan te passen...
maar je kan (met bv. dw) een search/replace doen in 'alle' files.... van die site dus ;)
Dan replace je $DOCUMENT_ROOOT. toch gewoon met iets leegs...

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou, teveel werk is niet eens 't hoofdargument voor mij om het topic te starten. Volgens mij stond zelfs in de openingspost dat ik doormiddel van een 'kunstgreep' het probleem heb verholpen.

Waarom dan wel de vraag?
Ik verbaas me erover dat de superglobal $_SERVER['DOCUMENT_ROOT']; onbruikbaar is bij sites die gehost worden door pcextreme.nl

Ik heb zelf een voor persoonlijk gebruik en één voor een site voor een groep studenten; en ik verbaasde mij erover dat hiermee problemen ontstaan.

Eerst dacht ik: het zit vast in de superglobals, dus $_SERVER['DOCUMENT_ROOT'] ipv de andere notatie, maar dat is het dus niet. De superglobal is hier volgens mij onbruikbaar; en vandaar mijn vraag of je in kunt stellen dat hij weer wel klopt.

Dus andere oplossingen vind ik leuk om te weten, maar eerlijk gezegd wist ik die al. Mijn verbazing over de onbruikbaarheid van $_SERVER['DOCUMENT_ROOT']; blijft staan, en ik vraag me (nog steeds) af of je dat ergens mee kunt wijzigen, of dat dat echt in de httpd.conf moet, of misschien zelfs in php.ini.

Dus de vraag is niet direct omdat ik problemen heb met includen, (ik heb een oplossing, maar hierover ben ik niet heel tevreden; hij werkt perfect, maar ik vind het gekunsteld). En meer uit nieuwsgierigheid is deze vraag gesteld; en ik vraag me af of je nu wel of niet (tweekeuzevraag ;)) hier wijzigingen in kunt aanbrengen, zodat de variabele $_SERVER['DOCUMENT_ROOT'] weer wel bruikbaar is.

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Kan je niet beter contact opnemen met pcextreme.nl? :)

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 11 mei 2004 @ 19:37:
Nou, teveel werk is niet eens 't hoofdargument voor mij om het topic te starten. Volgens mij stond zelfs in de openingspost dat ik doormiddel van een 'kunstgreep' het probleem heb verholpen.

Waarom dan wel de vraag?
Ik verbaas me erover dat de superglobal $_SERVER['DOCUMENT_ROOT']; onbruikbaar is bij sites die gehost worden door pcextreme.nl

Ik heb zelf een voor persoonlijk gebruik en één voor een site voor een groep studenten; en ik verbaasde mij erover dat hiermee problemen ontstaan.

Eerst dacht ik: het zit vast in de superglobals, dus $_SERVER['DOCUMENT_ROOT'] ipv de andere notatie, maar dat is het dus niet. De superglobal is hier volgens mij onbruikbaar; en vandaar mijn vraag of je in kunt stellen dat hij weer wel klopt.

Dus andere oplossingen vind ik leuk om te weten, maar eerlijk gezegd wist ik die al. Mijn verbazing over de onbruikbaarheid van $_SERVER['DOCUMENT_ROOT']; blijft staan, en ik vraag me (nog steeds) af of je dat ergens mee kunt wijzigen, of dat dat echt in de httpd.conf moet, of misschien zelfs in php.ini.

Dus de vraag is niet direct omdat ik problemen heb met includen, (ik heb een oplossing, maar hierover ben ik niet heel tevreden; hij werkt perfect, maar ik vind het gekunsteld). En meer uit nieuwsgierigheid is deze vraag gesteld; en ik vraag me af of je nu wel of niet (tweekeuzevraag ;)) hier wijzigingen in kunt aanbrengen, zodat de variabele $_SERVER['DOCUMENT_ROOT'] weer wel bruikbaar is.
Je snapt denkik niet helemaal waar die document root var voor dient. Als ik me niet vergis bepaalt die het pad vanuit de root van de server pc, en niet vanuit je domein. Op je eigen pc zal deze var, als je in Windows werkt, waarschijnlijk iets in de trant van "C:\Apache\htdocs\" teruggeven. Als je de root aan wil spreken die jij bedoelt, dan gebruik je daar gewoon alleen een forward slash ( / ) voor.
Je kan de inhoud van die servervariabele ook niet aanpassen bij mijn weten, en waarom zou je ook? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@blizt:
Misschien; misschien kunnen zij het beter aanpassen, maar ik vroeg me af (en ik doe dat dus voor ik naar pcextreme wilde gaan), of ik het niet zelf makkelijk kan aanpassen, op een of andere manier.

Ik denk dat ik hier wel op de goede plek zit om te vragen of het (in php) mogelijk is om deze omgevingsvariabele voor de hele site aan te passen.

Verwijzingen naar pcextreme, of naar een andere manier van werken zijn vast goed bedoeld, maar eigenlijk geen antwoord op de vraag ;).

@NMe84:
ok, wat je zegt zou heel goed kunnen, maar het verbaast mij dan wel dat het bij de oude host gewoon wel werkte. Wellicht omdat hun Document root overeenkomt met de documentroot van de site die ik draaide...

en @blitzt:
waarom moeilijk doen als 't makkelijk kan:
Omdat ik soms niet alleen een probleem (hij doet het niet) wil oplossen (want het werkt nu wel), maar omdat ik ook wil weten wat de oorzaak is. En ik zou me zelf kunnen voorstellen dat $_SERVER['DOCUMENT_ROOT'] heel goed gebruikt kan worden voor dit soort doeleinden (includen). Beter dan relatieve includes (als include '../../blaat/include.php';, omdat dat niet altijd geldig is, bijvoorbeeld als je een include in een include hebt :). Een andere mogelijkheid is gegeven, namelijk door include '/blaat/blaat/include.php';te gebruiken; maar ik was juist op zoek naar deze mogelijkheid...

[ Voor 48% gewijzigd door Verwijderd op 11-05-2004 19:49 ]


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Misschien geen antwoord, maar waarom zou je zelf moeilijk doen als 't niet hoeft? :)

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 11 mei 2004 @ 19:43:
Misschien; misschien kunnen zij het beter aanpassen, maar ik vroeg me af (en ik doe dat dus voor ik naar pcextreme wilde gaan), of ik het niet zelf makkelijk kan aanpassen, op een of andere manier.
Nergens voor nodig, want dan werk je om een probleem heen dat niet eens bestaat! :X
Verwijderd schreef op 11 mei 2004 @ 19:43:
Ik denk dat ik hier wel op de goede plek zit om te vragen of het (in php) mogelijk is om deze omgevingsvariabele voor de hele site aan te passen.
Kan niet.
Verwijderd schreef op 11 mei 2004 @ 19:43:
Verwijzingen naar pcextreme, of naar een andere manier van werken zijn vast goed bedoeld, maar eigenlijk geen antwoord op de vraag ;).
Mijn vorige post wel. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, thanx!

Maar voor een webmaster is deze omgevingsvariabele dus vrij zinloos?

Wat heb ik nu aan de root van de server van mijn host?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 11 mei 2004 @ 19:51:
ok, thanx!

Maar voor een webmaster is deze omgevingsvariabele dus vrij zinloos?

Wat heb ik nu aan de root van de server van mijn host?
Dat je bestanden kan aanspreken die buiten je webmap staan? Ik noem maar iets: imagemagick en andere commandline tools.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe84 schreef op 11 mei 2004 @ 19:52:
[...]

Dat je bestanden kan aanspreken die buiten je webmap staan? Ik noem maar iets: imagemagick en andere commandline tools.
Kun je misschien een voorbeeld geven?

Ik kan me er wel iets bij voorstellen, wat je bedoelt; ik heb zelf namelijk ook een webservertje gemaakt (freesco webserver), en daarbij heb ik ook een webserver-map (www) en dan kan ik bestanden includen die niet in die www-map staan.

Op mijn eigen servertje zou ik gerust kunnen werken met de $_SERVER['DOCUMENT_ROOT']. Dat kon ook gerust op de servers van deheeg (dat was de oude host, de nieuwe is pcextreme dus).

php.net zegt over document root het volgende:
code:
1
2
3
'DOCUMENT_ROOT'
The document root directory under which the current script is executing, 
as defined in the server's configuration file.
Op de server van pc extreme (waar ik de site nu op draai), geeft de documentroot variabele /var/www maar dat is niet het pad waarin het script staat. Het pad is namelijk /home/brandhout.net/www/
zie http://www.brandhout.net/info.php

Als ik op de genoemde site inlog op mijn ftp-adres, kan ik in de www-map mijn bestanden neerzetten voor het internet, zoals index.php, wat dus mijn frontpage is. Verder heb ik (naast die www-map een map die 'stats' heet (webalizer statistieken). Daarin staat bijvoorbeeld ook een index.php.

Met behulp van de $_SERVER['DOCUMENT_ROOT'] variabele kan ik op geen enkele wijze dit bestand includen. Als jullie wel een voorstel hebben waarop dit zou kunnen, ben ik benieuwd; want zoals ik het nu zie kan dat niet.

En wat dan wel de nut is van deze variabele op deze server, is mij onduidelijk.

Ik verwachtte dus idd van document_root dat dat de root was van mijn webserver (ik heb namelijk de domeinnaam brandhout.net met een hosting pakket). Dat is het dus gewoon niet; het wellicht de documentroot van pcextreme oid, maar ik zou niet weten wat ik hier nu mee kan...

Ik ben benieuwd...

[ Voor 4% gewijzigd door Verwijderd op 11-05-2004 22:11 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 11 mei 2004 @ 22:09:
[...]


Kun je misschien een voorbeeld geven?

Ik kan me er wel iets bij voorstellen, wat je bedoelt; ik heb zelf namelijk ook een webservertje gemaakt (freesco webserver), en daarbij heb ik ook een webserver-map (www) en dan kan ik bestanden includen die niet in die www-map staan.

Op mijn eigen servertje zou ik gerust kunnen werken met de $_SERVER['DOCUMENT_ROOT']. Dat kon ook gerust op de servers van deheeg (dat was de oude host, de nieuwe is pcextreme dus).

php.net zegt over document root het volgende:
code:
1
2
3
'DOCUMENT_ROOT'
The document root directory under which the current script is executing, 
as defined in the server's configuration file.
Op de server van pc extreme (waar ik de site nu op draai), geeft de documentroot variabele /var/www maar dat is niet het pad waarin het script staat. Het pad is namelijk /home/brandhout.net/www/
zie http://www.brandhout.net/info.php

Als ik op de genoemde site inlog op mijn ftp-adres, kan ik in de www-map mijn bestanden neerzetten voor het internet, zoals index.php, wat dus mijn frontpage is. Verder heb ik (naast die www-map een map die 'stats' heet (webalizer statistieken). Daarin staat bijvoorbeeld ook een index.php.

Met behulp van de $_SERVER['DOCUMENT_ROOT'] variabele kan ik op geen enkele wijze dit bestand includen. Als jullie wel een voorstel hebben waarop dit zou kunnen, ben ik benieuwd; want zoals ik het nu zie kan dat niet.

En wat dan wel de nut is van deze variabele op deze server, is mij onduidelijk.

Ik verwachtte dus idd van document_root dat dat de root was van mijn webserver (ik heb namelijk de domeinnaam brandhout.net met een hosting pakket). Dat is het dus gewoon niet; het wellicht de documentroot van pcextreme oid, maar ik zou niet weten wat ik hier nu mee kan...

Ik ben benieuwd...
Wat je er precies mee kan hangt af van de server, dus daar kan ik niet veel over zeggen. Misschien als je wat leest over de exec functie van PHP (ook de user comments) dat het je dan wat duidelijker wordt. Maar neem nou maar van ons aan dat het gebruik van de document root server variabele hier niet nodig is, en je dus beter die algemene replace kan doen die ik hierboven al aangedragen heb. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Even terugkomend op je oorspronkelijke probleem:

waarom forceer je $DOCUMENT_ROOT niet gewoon naar de juiste waarde te wijzen? Minimale aanpassing aan de code.

Aan het begin van elk script:
PHP:
1
$DOCUMENT_ROOT = "/home/mijndomein.net/www";

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat was idd mijn oplossing van het probleem ;)

Gelukkig zit de site zó in elkaar dat ik slechts in een paar scripts dit hoef in te voeren, maar ik blijf het echt vreemd vinden; volgens mij is het niet normaal...

[ Voor 65% gewijzigd door Verwijderd op 11-05-2004 22:19 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
in de apache config staat die docroot geconfigged. Mijn docroot is /usr/local/www/data en mijn ene domein staat dan in een map daar, en een andere domein staat weer in een andere map. Voor je scripts heb je er niet veel aan.

Mijn voorstel, zet in een van je main include files dit:

code:
1
define('DOCUMENT_ROOT', "/your/path/name/")


en verwijder bij alle $DOCUMENT_ROOT's de $'s. (middels search/replace). hoef je in het vervolg alleen maar die document root aan te passen.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op 11 mei 2004 @ 22:18:
Even terugkomend op je oorspronkelijke probleem:

waarom forceer je $DOCUMENT_ROOT niet gewoon naar de juiste waarde te wijzen? Minimale aanpassing aan de code.

Aan het begin van elk script:
PHP:
1
$DOCUMENT_ROOT = "/home/mijndomein.net/www";
Waarom niet gewoon "/"? Dan is de site iig portable naar andere hosts....

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

En dan al je php files in de root zetten? 8)7

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb nu de kortste klap genomen door teneerste in header.php (die in 90% van de pagina's als eerste komt) $DOCUMENT_ROOT aan te passen naar het gewenste pad, en in de rest van de bestanden heb ik handmatig hetzelfde gedaan.

Ik ben niet erg trots op deze oplossing; maar het draait allemaal.

Ik kan ook wel alles gaan wijzigen naar include '/pad/bestand.php';
maar als ik echt consequent wil gaan worden, en alles wil optimaliseren, dan ben ik nog wel even bezig. Dat is niet helemaal de bedoeling van deze site.

Ik heb dit topic ook niet echt gestart om een probleem dat ik heb (want opzich is het opgelost), maar meer omdat ik wilde weten of je dat niet via .htaccess kunt regelen, of om de vraag of het niet raar is dat het niet gewoon werkt, want ik dacht dat het juist heel slim was om $DOCUMENT_ROOT of in de huidige versies van php $_SERVER['DOCUMENT_ROOT'] te gebruiken. Dan zit je toch altijd goed? Maar niet dus, zo blijkt; nu is mijn standaard dus dat / streepje ;)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op 11 mei 2004 @ 23:52:
En dan al je php files in de root zetten? 8)7
Vanuit de root verder werken natuurlijk.. :P

/index.php
/inc/include1.php
/map1/map2/blaat/mekker.php

Das toch allemaal mooi relatief aan de webroot? Dus wat is het probleem? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

webroot? Nee, met / ga je naar het absolute root van je filesystem, niet naar je webroot

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op 12 mei 2004 @ 01:23:
webroot? Nee, met / ga je naar het absolute root van je filesystem, niet naar je webroot
Hier niet hoor....elke host die ik geprobeerd heb brengt me netjes naar de webroot met /. Inclusief mijn eigen servertje hier.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
als ik in een map
PHP:
1
2
3
<?
include '/index.htm';
?>

neerzet
krijg ik:

Warning: main(/index.htm): failed to open stream: No such file or directory in /home/brandhout.net/www/content/inc.php on line 2

Warning: main(): Failed opening '/index.htm' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/brandhout.net/www/content/inc.php on line 2

in plaats van de include van index.htm die zeker weten wel in de root staat....

:s dus het verhaal gaat niet op?

>>
bij

PHP:
1
2
3
<?
include '../index.htm';
?>

gaat het wel goed, maar dan is het weer een relatieve, in plaats van een absolute url; wat soms onhandig is.

[ Voor 20% gewijzigd door Verwijderd op 12-05-2004 02:16 ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

doe eens een readdir van / dan
dan zie je direct welke directory daarmee bedoeld word op deze server

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

NMe84 schreef op 12 mei 2004 @ 01:29:
[...]

Hier niet hoor....elke host die ik geprobeerd heb brengt me netjes naar de webroot met /. Inclusief mijn eigen servertje hier.
Hier wel (voorbeeld). Heb je info die je stelling backupt? Ik kan er niets over vinden in de PHP docs

En blijkbaar werkt het de ene keer dus wel, en de andere keer niet, dus portable is het niet, itt wat je eerder beweerde :)

[ Voor 7% gewijzigd door .oisyn op 12-05-2004 02:31 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Als je in de manual kijkt staat er:
'DOCUMENT_ROOT'
The document root directory under which the current script is executing, as defined in the server's configuration file.

Oftewel dit staat in de config file van de webserver. Bijvoorbeeld in je httpd.conf, daarin kun je bij een virtualhost een documentroot opgeven, wordt dit niet gedaan dan is het de documentroot van de hoofdserver. Meestal dus /var/www en niet /home/gebruiker/www.

Het is altijd verstandig om includes relatief te maken om de boel portable te houden. Ik kan me haast niet voorstellen dat een site zoveel directories heeft dat dit onoverzichtelijk wordt, misschien is het dan een beter idee om de structuur van de website nog eens goed te bekijken.

Eventueel kun je realpath("."); gebruiken in je eigen dir om die dir te krijgen of bijvoorbeeld $_SERVER['PATH_TRANSLATED'] Je kan ook je host vragen even de documentroot in te vullen bij de virtualhost.

Als je 1 map hebt met daarin al je libraries die je wil includen zou je die natuurlijk ook gemakkelijk in je include path kunnen zetten, dit kan ook via je script als de admin dit niet expliciet heeft uitgeschakeld.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op 12 mei 2004 @ 02:25:
[...]


Hier wel (voorbeeld). Heb je info die je stelling backupt? Ik kan er niets over vinden in de PHP docs

En blijkbaar werkt het de ene keer dus wel, en de andere keer niet, dus portable is het niet, itt wat je eerder beweerde :)
Op http://www.nvknf.nl/ maken we hier regelmatig gebruik van, en dat werkt zonder problemen. Dat is wel een IIS server. Maar thuis op mijn Apache servertje werkt het ook gewoon met die forward slash... Dus over dat niet portable zijn zul je dan wel gelijk hebben, maar erg vaag is het wel...
Het zal sowieso een instelling van Apache zijn, en niet van PHP trouwens. ;)

edit:
Ik ben amper verantwoordelijk voor die site die ik postte, ik schrijf er alleen scripts voor, mijn stagebegeleider maakt de HTML files in Frontpage... :X

[ Voor 10% gewijzigd door NMe op 12-05-2004 09:41 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1