Ошибка PHP говорит, что CONSTANT не определен, но уже определен, а значение пусто?

У меня есть следующие настройки (архитектура) в моем проекте веб-дизайна. Который не работает по какой-то причине.

У меня есть страница index.php со следующими включениями в верхней части

require_once("includes/init.php");

Тогда в моем init.php у меня есть

require_once('config.php');
require_once('functions.php');
ob_start();
spl_autoload_register('load_api');
$db      = new Database();
$db->connect();

И в моем файле конфигурации я определил следующее

 define('DOC_ROOT', $_SERVER['DOCUMENT_ROOT']."/websitename");
define('CLASS_LIB', DOC_ROOT . "/classes");

И в моих функциях автозагрузки есть

function load_api($class){
if(!file_exists(CLASS_LIB."/".$class. '.class.php') )
return false;
require_once( CLASS_LIB."/".$class. '.class.php');
return true;
}

Когда я запускаю эту структуру дизайна в моем xamp / xdebugger, она выдает ошибки

( ! ) Notice: Use of undefined constant CLASS_LIB - assumed 'CLASS_LIB' in D:\websitename\includes\functions.php on line 7
Call Stack
#   Time    Memory  Function    Location
1   0.0009  144128  {main}( )   ..\index.php:0
2   0.0020  155632  require_once( 'D:\websitenae\includes\init.php' )   ..\index.php:2
3   0.0129  400360  spl_autoload_call ( 'Database' )    ..\index.php:6
4   0.0129  400408  load_api( $class = 'Database' ) ..\index.php:0

( ! ) Fatal error: Class 'Database' not found in D:\websitename\includes\init.php on line 6
Call Stack
#   Time    Memory  Function    Location
1   0.0009  144128  {main}( )   ..\index.php:0
2   0.0020  155632  require_once( 'D:\websitename\includes\init.php' )  ..\index.php:2

Кажется, ошибка в том, что CLASS_LIB не обнаружен, однако я не могу понять, почему, поскольку он, кажется, уже определен правильно и загружается до этого сценария, плюс я не вижу двойного включения также в коде … какие-либо идеи высоко ценятся?

0

Решение

Наконец я нашел это, это может случиться с кем угодно, и поэтому я публикую это как решение.

Когда я запустил это, я не получил никаких ошибок от функции require (), потому что он загружает файл конфигурации, однако я обнаружил, что он не загружает правильный файл конфигурации в указанном месте,

вместо этого он идет в PEAR, включая местоположение и загрузку файла точного имени, называемого «config.php», поэтому require не выдал мне ошибку, и именно поэтому мой конфигурационный файл vars не был загружен.

Так что, чтобы исправить, я должен указать явный путь для моей конфигурации, как показано ниже

require_once(__DIR__.'/config.php');

Это решило проблему 🙂 очень сложно

1

Другие решения

Насколько я знаю ob_start (); должен быть сверху и ob_end_flush (); внизу

ob_start(); // top
//
//
ob_end_flush(); // bottom
-2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector