That will try and find a file in these locations in order:
/var/www/html/projects/include/db.inc
./db.inc
/php/includes/db.inc
And will use the first one found.
I would not suggest using ini_set() inside you're scripts to
adjust your paths.
Curt
Hey Curt, why do you suggest we don't use ini_set to adjust paths? I'm using it as part of my library autoloader - it may not be as efficient as changing the path directly but it seems to work well.
<?php
/**
* Used to load all class definitions. It temporarily adds directories
* listed in $classDirs to the include path and tries to load the class
* definition from the new temporary path. Path resets to original
* after failure / success.
*
* @param string The name of the class that you want to instanciate.
* This should use PEAR-style class names, e.g.
* Directory_Subdir_File
* @return object|void
*/
function __autoload($class) {
if (empty($class) || strpos($class, '://')) {
// Zend engine can't throw exceptions in __autoload()
trigger_error('Cannot get class file', E_USER_WARNING);
return;
}
if (!defined('PATH_SEPARATOR')) {
if (strstr(PHP_OS, 'WIN')) {
define('PATH_SEPARATOR', ';');
} else {
define('PATH_SEPARATOR', ':');
}
}
static $origPath = null;
if (is_null($origPath)) {
$origPath = ini_get('include_path');
}
static $newPath = null;
if (is_null($newPath)) {
$cur = dirname(__FILE__ . DIRECTORY_SEPARATOR);
$classDirs = array($cur);
$aryPath = explode(PATH_SEPARATOR, $origPath);
$aryPath = array_merge($aryPath, $classDirs);
$newPath = implode(PATH_SEPARATOR, $aryPath);
}
// Do PEAR-like file inclusion
$class = str_replace('_', DIRECTORY_SEPARATOR, $class);
ini_set('include_path', $newPath);
include_once ($class . ".php");
if (!class_exists($class)) {
trigger_error("No class definition for $class found in library",
E_USER_ERROR);
}
ini_set('include_path', $origPath);
}
?>