include_once behaves differently in mod_php4 vs php5-cgi

From: Date: Wed, 30 Nov 2005 17:51:12 +0000
Subject: include_once behaves differently in mod_php4 vs php5-cgi
Groups: php.general 
Request: Send a blank email to php-general+get-226656@lists.php.net to get a copy of this message
Hello! There's a website with a following structure index.php in the site's DocumentRoot directory (for this thread, let's call it /www) functions.php, init.php and db_connect.php in /www/library index.php includes line: include_once('library/functions.php'); functions.php includes lines: include_once('db_connect.php'); include_once('init.php'); The website was running fine under PHP 4.4.0 installed as Apache module. Then we tried it with PHP 5.0.5 installed as CGI. We got the following errors: PHP Warning: main() : open_basedir restriction in effect. File(/db_connect.php) is not within the allowed path(s): (/www:/usr/local/www/phpMyAdmin:/var/tmp/php) in /www/library/functions.php on line 2 PHP Warning: main(db_connect.php) : failed to open stream: Operation not permitted in /www/library/functions.php on line 2 PHP Warning: main() : Failed opening 'db_connect.php' for inclusion (include_path='.:') in /www/library/functions.php on line 2 ...and similar 3 messages about init.php. Note that first warning is about '/db_connect.php', not 'db_connect.php' or './db_connect.php'. /www/library should be inside the open_basedir, since it is under /www, which is listed in open_basedir in php.ini. It looks like something is changed in PHP's behaviour between versions 4 and 5 or is differently handled in CGI vs Apache SAPI, but I find it unlikely since I can find no documentation regarding this. It's more likely that I am overlooking something trivial, but I can't figure out what it is. I tried to change the include lines to include_once('./db_connect.php'); include_once('./init.php'); but this made no difference. However, when I specify the full path: include_once('/www/library/db_connect.php'); include_once('/www/library/init.php'); then the errors disappear and 'everything' seems to work. Also, I never get any errors about the include_once('library/funcions.php'); line in index.php I'm puzzled... -- ... ASCII stupid question, get a stupid ANSI!

« previous php.general (#226656) next »