Una opción es centralizar este tipo de rutas en un archivo de configuración que incluyes en todos tus scripts. Por ejemplo:
config.php
Código PHP:
define('DIR_BASE', 'c:/www' . DIRECTORY_SEPARATOR);
define('DIR_LIB', DIR_BASE . 'lib' . DIRECTORY_SEPARATOR);
define('DIR_THIRDPARTY', DIR_LIB . 'thirdparty' . DIRECTORY_SEPARATOR);
define('DIR_PDF', DIR_THIRDPARTY . 'fpdflib' . DIRECTORY_SEPARATOR);
define('DIR_TEMPLATES', DIR_BASE . 'templates' . DIRECTORY_SEPARATOR);
etc.
DIRECTORY_SEPARATOR es una constante predefinida que toma el valor correcto según si estás en unix o windows. Esto se lo aprendí a
dec, y es muy útil porque evitas cargar la constante en el resto de scripts:
Código PHP:
require_once('config.php');
require_once(DIR_PDF . 'fpdf.php');
en lugar de
Código PHP:
require_once('config.php');
require_once(DIR_PDF . DIRECTORY_SEPARATOR . 'fpdf.php');
El archivo config.php en sí lo puedes situar en la raíz de los documentos http, por ejemplo, c:/www/html.
Si mantienes una misma estructura de directorios:
Código:
base
|
+---- lib
| |
| +---- thirdparty
| | |
| | +---- fpdf
| | |
| | +---- biff
| |
| +---- database
| |
| +---- whatever
|
+---- templates
|
.
.
.
en principio bastará cambiar la ruta
base pues todas las demás derivan de ella.
Por otra parte, te comento que no es necesario poner tus directorios fuera de la raíz web. Si usas Apache, puedes restringir el acceso externo a directorios completos poniendo un archivo .htaccess dentro:
.htaccess
aunque para ello, el servidor debe habilitar la reescritura de directivas en tu raiz web.
// Saludos