Uso de constante indefinida en PHP mientras se genera la ruta del directorio
Frecuentes
Visto 5,837 veces
1
estoy usando este código para definir las rutas de directorio de mi proyecto:
config.php es
<?php
define('CB_HOME', realpath(dirname(__DIR__)));
define('FD_HOME', CB_HOME."/testbot");
Uso estoy usando CB_home y FD_home en otros archivos.
estoy recibiendo el error:
PHP Notice: Use of undefined constant CB_HOME - assumed 'CB_HOME' in C:\\xampp\\htdocs\\test-bot\\testbot\\bootstrap.php on line 3
PHP Warning: require_once(CB_HOME/AbstractCbRest.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in C:\\xampp\\htdocs\\test-bot\\testbot\\bootstrap.php on line 3
PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'CB_HOME/AbstractCbRest.php' (include_path='.;C:\\xampp\\php\\PEAR') in C:\\xampp\\htdocs\\test-bot\\testbot\\bootstrap.php on line 3
mi bootstrap.php es:
<?php
require_once 'config.php';
require_once CB_HOME.'/AbstractCbRest.php';
¿dónde está yendo mal?
2 Respuestas
1
Yo creo que include_path la configuración está interfiriendo con su script. Entonces (como lo mencionó @deceze) es posible que esté cargando un archivo config.php incorrecto (aunque existente).
Tal vez podría intentar usar una ruta absoluta para incluir su configuración o usar algo como:
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php';
contestado el 22 de mayo de 12 a las 10:05
MUCHAS GRACIAS. De hecho, la configuración de include_path estaba interfiriendo con el script. Tenía que dar la ruta absoluta. - Shiven
-1
Es obvio que la ruta de Windows con dos "\" no funciona. Para eliminar una barra invertida doble (NOTA: esta no es una solución sino una solución alternativa), haga lo siguiente:
$someValue = 'C:\\xampp\\htdocs\\test-bot\\testbot\\'; $someValue = preg_replace('/\\\\/u', '\\', $someValue);
o en tu caso:
define('CB_HOME', preg_replace('/\\\\/u', '\\', realpath(dirname(DIR))));
contestado el 22 de mayo de 12 a las 09:05
Por qué usar DIR
en lugar de __DIR__
¿debería ayudar? __DIR__
es un constante mágica en PHP... - Oleg
Hombre, no lo sé, pero hubo una publicación antes de sugerir que... se eliminó. - sistema
@ user1327205 si realmente quieres ir con ese preg_replace, aunque no lo recomiendo. obtener $algúnValor = rutareal(dirname(DIR)); y luego active el preg_replace como se muestra arriba en la primera línea. haga eco de las cosas y verá, si al menos elimina esos \\ (doble barra invertida). No puedo reproducirlo para usted, ya que trabajo con una vm-lamp y no con xamp. En mi entorno, su código funciona bien. - sistema
Me preguntaba si usé CB_HOME en bootstrap.php, ¿debería ponerlo entre comillas? require_once CB_HOME.'/AbstractCbRest.php'; debería cambiarlo a require_once 'CB_HOME'.'/AbstractCbRest.php'; - Shiven
@Shiven ¿Cuál es el punto? Esto intentará require_once "CB_HOME/AbstractCbRest.php";
¿Está seguro de que tiene un directorio llamado "CB_HOME"? ¿No querías usar una constante con realpath en su lugar? - Oleg
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php or haz tu propia pregunta.
Y la constante se define en
config.php
? ¿Estás seguro de que estás mirando el correctaconfig.php
? - decezeIntente concatenar el valor de la casa FD antes de definirlo. - IEnumerable
Intenté hacer lo mismo pero persiste el mismo error: Shiven