预定义的PHP常量不起作用

预定义的PHP常量不起作用,php,oop,initialization,constants,Php,Oop,Initialization,Constants,我遵循一个教程,用所需的文件创建一个实例化文件。这是项目树: 这是我的instantiate.php: defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); defined('SITE_ROOT') ? null : define('SITE_ROOT', DS.'var'.DS.'www'.DS.'html'.DS.'photo_gallery'); defined('LIB_PATH') ? null : define('L

我遵循一个教程,用所需的文件创建一个实例化文件。这是项目树:

这是我的
instantiate.php

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

defined('SITE_ROOT') ? null : define('SITE_ROOT', DS.'var'.DS.'www'.DS.'html'.DS.'photo_gallery');

defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');

//load config file first
require_once(LIB_PATH.DS."config.php");

//load basic functions next so that everything after can use them
require_once(LIB_PATH.DS."functions.php");

//load core objects
require_once(LIB_PATH.DS."session.php");
require_once(LIB_PATH.DS."database.php");

//load database-related classes
require_once(LIB_PATH.DS."user.php");
login.php
中,我要求初始化文件为:

require_once("../../includes/initialize.php");
但是在本教程之后,我可以在需要
config.php
的文件中使用
LIB_路径,比如
database.php
user.php
需要
database.php

目前,它们需要不带路径的文件,因为它们位于同一个包含文件中。但是,如果我已经完全理解了目录分隔符、站点根和lib_路径的工作方式,那么需要改进的是,不需要到处添加不同的路径,只需通过常量添加路径即可。好吧,这不管用!它显示如下:(在顶部,您可以看到公共文件夹上
index.php
中的
dirname(\uu文件)
的回声

我已经检查了
phpinfo
以查看根路径…似乎一切正常,但如果我尝试使用此
LIB\u path.DS
,则无法工作

我读到的最后一件事是关于ibay的一些限制,但我试图做更多的研究,我甚至找不到这个“ibay”是什么


有人知道为什么会发生这种情况吗?谢谢!

您收到了一个通知,因为您在包含文件的路径上有一个错误:您没有在脚本上加载
initialize.php
文件。如果您真的想加载该文件(并且您真的想要,因为您的代码不能没有它),您应该使用
require
而不是
include
。这样,如果文件不存在,您将收到一条错误消息,代码将停止(请将停止视为您真正想要的,好像您没有程序将严重失败的路径)

更重要的是,您应该使用一次
require\u
,这样您就不会使正在构建的应用程序过载:如果文件加载一次,就不会再次加载


您可以根据以下问题的建议检查文件是否已加载:

您说那里的代码是关于
instantiate.php
,但它的真实名称似乎是
initialize.php
,您是否犯了错误,或者您是否有其他文件?