在PHP中生成目录路径时使用未定义的常量
我正在使用此代码定义项目的目录路径: 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
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';