Hello Tom, Sunday, March 6, 2005, 10:00:17 PM, you wrote: TR> Ok I see where is is going wrong, try this: Oooooh, very close. Although you have it at $document_root and all that needs to be added is '/include' like below: $include = $document_root . '/include'; Otherwise it's one directory too far up because you're replacing the site root 'test' (in this case) with 'include'. We wanted: 'C:/Sambar/docs/test/include' Here's from your script. Site root: ********** File name: C:/Sambar/docs/test/test.php Script: /test.php Document root: C:/Sambar/docs/test Base: test Include: C:/Sambar/docs/include OS: winnt Include: C:/Sambar/docs/include;.;C:\php5\pear ********** Site root/folder1 ********** File name: C:/Sambar/docs/test/folder1/test.php Script: /folder1/test.php Document root: C:/Sambar/docs/test Base: test Include: C:/Sambar/docs/include OS: winnt Include: C:/Sambar/docs/include;.;C:\php5\pear ********** Site root/folder1/folder2 ********** File name: C:/Sambar/docs/test/folder1/folder2/test.php Script: /folder1/folder2/test.php Document root: C:/Sambar/docs/test Base: test Include: C:/Sambar/docs/include OS: winnt Include: C:/Sambar/docs/include;.;C:\php5\pear ********** After my change: File name: C:/Sambar/docs/test/folder1/folder2/test.php Script: /folder1/folder2/test.php Document root: C:/Sambar/docs/test Base: test Include: C:/Sambar/docs/test/include OS: winnt Include: C:/Sambar/docs/test/include;.;C:\php5\pear The other two folders moving back up the tree are the same result. So the final looks like: ************************ if(isset($_SERVER["SCRIPT_FILENAME"])){ $file_name = str_replace('\\','/',$_SERVER['SCRIPT_FILENAME']); echo "File name: $file_name<br>"; $script = str_replace('\\','/',$_SERVER['SCRIPT_NAME']); echo "Script: $script<br>"; $document_root = str_replace($script,'',$file_name); echo "Document root: $document_root<br>"; $base = basename($document_root); echo "Base: $base<br>"; //$include = str_replace($base,'include',$document_root); $include = $document_root . '/include'; echo "Include: $include<br>"; $os = strtolower(PHP_OS); echo "OS: $os<br>"; $lk = ':'; $org_include = ini_get("include_path"); if(preg_match('/^win/i',$os)) $lk = ';'; ini_set("include_path",$include.$lk.$org_include); echo "Include: ".ini_get("include_path")."<br>"; } ************************ It's a great effort and looks bulletproof. Can you shoot any holes in mine? A full explanation at: http://www.devtek.org/tutorials/dynamic_document_root.php I only throw mine back out there because it's shorter. I think it's solid, but only because I haven't broken it yet. :-) Both our solutions suffer the same problem. They have to be on every page that requires an include, because we can't rely on a new host having our code in their auto_prepend file ********** function dynRoot() { $levels = substr_count($_SERVER['PHP_SELF'],"/"); for ($i=0; $i < $levels - 1; $i++) { $relativeDir .= "../"; } return $relativeDir; } include(dynRoot() . 'includes/somefile.php') ********** Thanks again! Cheers, Leif Gregory -- TB Lists Moderator (and fellow registered end-user) PCWize Editor / ICQ 216395 / PGP Key ID 0x7CD4926F Web Site <http://www.PCWize.com> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php