Uso de constante indefinida en PHP mientras se genera la ruta del directorio

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?

preguntado el 22 de mayo de 12 a las 08:05

Y la constante se define en config.php? ¿Estás seguro de que estás mirando el correcta config.php? -

Intente concatenar el valor de la casa FD antes de definirlo. -

Intenté hacer lo mismo pero persiste el mismo error:

2 Respuestas

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

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 or haz tu propia pregunta.