ruta require_once otra funciona ejemplo desde como carpeta php warnings fatal-error require-once

require_once - ruta include php



la ruta relativa en require_once no funciona (3)

En mi caso, no funciona, incluso con __DIR__ o getcwd() sigue eligiendo el camino equivocado, lo resolví definiendo un costo en cada archivo que necesito con la ruta base absoluta del proyecto:

if(!defined(''THISBASEPATH'')){ define(''THISBASEPATH'', ''/mypath/''); } require_once THISBASEPATH.''cache/crud.php''; /*every other require_once you need*/

Tengo MAMP con php 5.4.10 y mi jerarquía de carpetas es basilar:

q.php w.php e.php r.php cache/a.php cache/b.php setting/a.php setting/b.php

....

Tengo la siguiente estructura

otsg > class > authentication.php > database.php > user.php > include > config.inc.php > encryption.php > include.php > session.php > index.php > registration.php

include.php tiene la siguiente

ini_set(''display_errors'', 1); error_reporting(E_ALL); ini_set(''include_path'',ini_get(''include_path'').'':/Applications/MAMP/htdocs/otsg/:''); require_once ''config.inc.php''; require_once ''../class/database.php''; require_once ''../class/user.php''; require_once ''encryption.php''; require_once ''session.php''; require_once ''../class/authentication.php'';

y en la página de index.php que había incluido

require_once ''include/include.php'';

Cuando abro la página index.php recibo la siguiente advertencia y un error fatal. No entiendo qué causa este error. Cuando di el camino absoluto, funciona. Pero el camino absoluto no es una buena idea, creo.

Warning: require_once(../class/database.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/otsg/include/include.php on line 9 Fatal error: require_once() [function.require]: Failed opening required ''../class/database.php'' (include_path=''.:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/htdocs/otsg/include/:'') in /Applications/MAMP/htdocs/otsg/include/include.php on line 9

Gracias por adelantado


Utilizar

__DIR__

para obtener la ruta actual del script y esto debería solucionar su problema.

Asi que:

require_once(__DIR__.''/../class/user.php'');

Esto evitará casos en los que pueda ejecutar un script PHP desde una carpeta diferente y, por lo tanto, las rutas familiares no funcionarán.

Editar: problema de barra fija


para php versión 5.2.17 __ DIR __ no funcionará, solo funcionará con php 5.3

Pero para la versión anterior de php dirname ( __ FILE __ ) perfectamente

Por ejemplo escribe así

require_once dirname ( __ FILE __ ). ''/db_config.php'';