[php]require_once van hogergelegen bestand doet raar

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
ik heb oa twee mappen in de root mijn website
code:
1
2
3
4
5
6
7
8
9
10
11
/
  /config
    -DbSettings.conf.php
    -nogiets.conf.php
    -enz.conf.php
    -.....
  /include
    -DbConnector.class.php
    -nogiets.class.php
    -enz.class.php
    -.....

in de DbConnector.class.php wil ik de DbSettings.conf includen.

Ik verwachtte dat het volgende het zou doen:
PHP:
1
require_once '../config/DbSettings.conf.php';

helaas krijg ik hierbij de volgende foutmelding
code:
1
Warning: main(): open_basedir restriction in effect. File(../config/DbSettings.conf.php) is not within the allowed path(s):

nu dacht ik, misschien zit safe mode dwars, maar na safe mode uitgezet te hebben kreeg ik een HTTP Error 500 - Internal server error

als ik het volgende echo
PHP:
1
echo get_include_path();

krijg ik als dir te zien:
code:
1
.:/usr/share/pear


Nu komt het raarste van alles, als ik ../ weg haal in mijn require dus het volgende require:
PHP:
1
require_once 'config/DbSettings.conf.php';


zie ik nu echt iets doms over het hoofd?

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Als jij DbConnector.class.php vanuit bijv. een index.php include, zal je ook vanuit die index.php moeten gaan rekenen.

Er wordt dus een bestand vanuit include/ gehaald, en dan wordt een include gegeven naar config/: je begindocument zit dus in je eigen root, dus vanuit daar moet je ook rekenen. Je code moet dan zijn:
PHP:
1
require_once 'config/DbSettings.conf.php'


PS. get_include_path doet toch wat anders? http://php.net/get_include_path

Acties:
  • 0 Henk 'm!

  • Stephan11117
  • Registratie: Mei 2004
  • Laatst online: 11-06 20:40
zirus schreef op dinsdag 08 augustus 2006 @ 17:19:

Nu komt het raarste van alles, als ik ../ weg haal in mijn require dus het volgende require:
PHP:
1
require_once 'config/DbSettings.conf.php';
Nou wat dan?


Als je bedoelt dat het dan wel werkt, zie bovenstaande verklaring.

[ Voor 11% gewijzigd door Stephan11117 op 08-08-2006 17:27 ]


Acties:
  • 0 Henk 'm!

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
dus het is het beste om daar gebruik te maken van een absolute path aangezien die op verschillende pagina's aangeroepen word, best raar dat hij daar de path van het bestaand waar de class word geinclude uitgaat, gaat toch tegen mijn gevoel in.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
- nevermind, dacht dat 3e message van TS was |:( -

[ Voor 91% gewijzigd door mithras op 08-08-2006 17:33 ]


Acties:
  • 0 Henk 'm!

  • elTigro
  • Registratie: November 2000
  • Laatst online: 04-05 13:01

elTigro

Es un Gringo!

het ligt er een beetje aan hoe apache geconfigureerd is, maar ik dacht dat je niet zomaar een '../' directory mag includen/requiren
ik meen dat je dan safemode uit moet zetten.

oops beter lezen. sorry

[ Voor 8% gewijzigd door elTigro op 08-08-2006 17:38 ]

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


Acties:
  • 0 Henk 'm!

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Mithras86 schreef op dinsdag 08 augustus 2006 @ 17:32:
- nevermind, dacht dat 3e message van TS was |:( -
he jammer dat ik het niet zag :P


maar als je classes hebt die vaak door veel directories geinclude worden is het toch niet handig dat hij de path mee neemt van het bestand waar de class word aangemaakt.

is er een nettere manier dan nu in alle bestanden een conf bestand includen met de absolute paden?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11-06 21:17

Janoz

Moderator Devschuur®

!litemod

Nee, helaas niet. Dit is een van de brakke ontwerpkeuzes van het php ontwikkelteam waarmee je zult moeten leren leven.

edit: Zie ook [PHP] Include relatief aan huidig bestand (C++ style)

[ Voor 24% gewijzigd door Janoz op 08-08-2006 19:46 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1