Toon posts:

php safe_mode include bestand van andere gebruiker

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo Allemaal

Ik heb een php probleem. Ik heb een website in php geschreven. Deze heb ik op mijn eigen server ontwikkeld. Toen ik deze naar de live server kopieerde kreeg ik deze melding:

Warning: main(): Unable to access /home/test/classes/Common.class.php in /home/test/index.php on line 11

Warning: main(/home/test/classes/Common.class.php): failed to open stream: Permission denied in /home/test/index.php on line 11

in de index.php staat er dit:
code:
1
2
$varDocRoot = $_SERVER['DOCUMENT_ROOT'];
require($varDocRoot . "classes/Common.class.php");


Ik heb gecontroleerd dat /home/test/classes/Common.class.php bestaat. Omdat er staat permission denied heb ik chmod +r * -R gedaan om er voor te zorgen dat iedereen de file kan uitlezen.

Dit hielp niet. Toen ontdekte ik dat op de live server safe_mode aan staat.
When safe_mode is on, PHP checks to see if the owner of the current script matches the owner of the file to be operated on by a file function or its directory.
Ik heb toen chown test.users * -R uitgevoerd om ervoor te zorgen dat index.php en alle andere bestanden die geinclude wordt van dezelfde eigenaar zijn maar dat hielp ook niet. Ik heb toen geinformeerd bij de systeem beheerder van de server als welke gebruiker apache draaide. Dit bleek nobody te zijn. Ik vermoed dat dan 'nobody' een bestand van gebruiker test probeerd te include en dat mag niet volgens de manual.

Wegens security redenen willen we niet de owners veranderen van de web bestanden en we willen niet dat apache onder een andere gebruiker draait.

Ik heb toen geprobeerd de bestanden te evalen met de volgende code:
eval(file_get_contents($file_name));
in mijn voorbeeld ziet het er zo uit
eval(file_get_contents($varDocRoot . 'classes/Common.class.php'));

maar dan krijg ik deze foutmelding:
Parse error: parse error, unexpected '<' in /home/test/SafeInclude.class.php(34) : eval()'d code on line 1
dus paste ik het code aan en dan staat er
eval("file_get_contents($varDocRoot . 'classes/Common.class.php')");
Nu krijg ik de error:
parse error, unexpected '/', expecting ')'

Het liefst los ik het op via include maar als je een idee heb hoor ik heel graag.

[ Voor 4% gewijzigd door Verwijderd op 07-07-2005 13:08 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 16-08 20:53
Zet even "error_reporting(E_ALL);" bovenaan je script. Ik geloof dat dan ook openbasedir foutmeldingen worden weergegeven. Mogelijk heb je gewoon geen toegang tot die directory met includen, of zit er iets anders scheef :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)