在PHP中生成目录路径时使用未定义的常量

在PHP中生成目录路径时使用未定义的常量,php,Php,我正在使用此代码定义项目的目录路径: php是 <?php define('CB_HOME', realpath(dirname(__DIR__))); define('FD_HOME', CB_HOME."/testbot"); 很明显,带有两个“\”的windows路径不起作用。要删除双反斜杠(注意:这不是解决方案,而是解决方法),请执行以下操作: $someValue = 'C:\\xampp\\htdocs\\test-bot\\testbot\\'; $someValue =

我正在使用此代码定义项目的目录路径:

php是

<?php
define('CB_HOME', realpath(dirname(__DIR__)));
define('FD_HOME', CB_HOME."/testbot");

很明显,带有两个“\”的windows路径不起作用。要删除双反斜杠(注意:这不是解决方案,而是解决方法),请执行以下操作:

$someValue = 'C:\\xampp\\htdocs\\test-bot\\testbot\\'; $someValue = preg_replace('/\\\\/u', '\\', $someValue);
或者在您的情况下:

define('CB_HOME', preg_replace('/\\\\/u', '\\', realpath(dirname(DIR))));
我猜设置会干扰您的脚本。因此(正如@deceze所提到的),您可能加载了一个不正确的(尽管存在)config.php文件

也许您可以尝试使用绝对路径来包含您的配置,或者使用以下内容:

require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php';

常量是在
config.php
中定义的?您确定查看的是正确的
config.php
?在定义FD home值之前,请先尝试将其浓缩。我尝试了同样的操作,但仍然持续出现同样的错误。使用
DIR
而不是
\uuuuuuuuu\uuuu
应该会有帮助吗
\uuuu DIR\uuuuu
在PHP中是一个神奇的常量…伙计,我不知道,但之前有一篇帖子建议。。。但是被删除了。@user1327205如果你真的想用preg_替换,尽管我不推荐。get$someValue=realpath(dirname(DIR));然后触发preg_replace,如上图第一行所示。回显这些内容,你就会看到,如果它至少删除了那些\\(双反斜杠)。我无法为您复制它,因为我使用的是vm灯,而不是xamp。在我的环境中,您的代码运行得很好。我想知道我在bootstrap.php中使用了CB_HOME,是否应该在其中加引号。需要一次CB_HOME.'/AbstractCbRest.php';我是否应该将其更改为require_once'CB_HOME'。/AbstractCbRest.php'@希文:有什么意思?这将尝试
require_once“CB_HOME/AbstractCbRest.php”你确定你有一个名为“CB_HOME”的目录吗?你不想在realpath中使用常量吗?非常感谢。事实上,include_path设置干扰了脚本。必须给出绝对路径。
define('CB_HOME', preg_replace('/\\\\/u', '\\', realpath(dirname(DIR))));
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php';