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'';