Toon posts:

[PHP5] open_basedir restriction bij require_once

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

Verwijderd

Topicstarter
Ik gebruik op dit moment voor een stukje code 2 test servers. 1 op mijn werk en 1 die ik vanaf huis kan benaderen. op mijn werk draaien we php 5.1.x en de server die van huis te bereiken is op 5.0.4

btw vast even excuses voor de lange lap text ;) maar is imho beste manier even het hele plaatje te geven.

op beide servers heb ik de hoofdmap met daaronder een map classes. rechten staan gelijk.

de situatie is als volgt:
code:
1
2
3
4
5
/root
  index.php
  /classes
    class1.php
    class2.php


index.php:
PHP:
1
2
3
<?php
require_once("./classes/class1.php");
?>


class1.php
PHP:
1
2
3
4
5
6
7
8
<?php
require_once("class2.php");

class class1 extends class2
{

}
?>


class2.php
PHP:
1
2
3
4
5
6
<?php
class class2
{

}
?>


tot nu toe allemaal geen enkel probleem op de server op mijn werk....
probleem op de server thuis. zodra ik dit daarop draai krijg ik de volgende fout meldingen:

code:
1
2
3
4
5
Warning: main() [function.main]: open_basedir restriction in effect. File(/usr/share/pear/Table.php) is not within the allowed path(s): (/var/www/vhosts/raceeend.net/httpdocs:/tmp) in /var/www/vhosts/raceeend.net/httpdocs/casema/csotoolmir/classes/TableShowAll.php on line 3

Warning: main(Table.php) [function.main]: failed to open stream: Operation not permitted in /var/www/vhosts/raceeend.net/httpdocs/casema/csotoolmir/classes/TableShowAll.php on line 3

Fatal error: main() [function.require]: Failed opening required 'Table.php' (include_path='.:/usr/share/pear') in /var/www/vhosts/raceeend.net/httpdocs/casema/csotoolmir/classes/TableShowAll.php on line 3


echter als ik op die server in class1.php het verander naar require_once("./classes/class2.php") gaat het helemaal goed...

wat kan ik doen aan de code(zonder aanpassingen op de php server, die rechten heb ik helaas niet) om te zorgen dat ik die class eventueel ook vanuit een andere folder kan draaien? als ik nu die files verplaats van classes naar een andere folder moet ik ineens de source van die files aan gaan passen en dat schiet totaal niet op. het gaat hier ook niet om 1 enkele class zoals dit voorbeeldje maar best een flinke berg.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Het is me niet helemaal duidelijk vanaf waar je dat Pear-bestand include. Je zou dit bestand namelijk ook op je eigen webruimte kunnen zetten, maar of je met 'die class' in je laatste alinea naar de Pear-class verwijst is me niet duidelijk. Alternatief is dat je hoster /usr/share/pear/ toevoegt aan de open_basedir, dat lijkt me vrij onschuldig.
Houd er rekening mee dat PHP bijna bij iedere nieuwe versie wel weer wat bugs oplost mbt open_basedir, dus updaten naar de nieuwste versie is toch aan te raden met dit soort problemen.

[ Voor 4% gewijzigd door GlowMouse op 22-11-2007 00:32 ]