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); }
?>
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php