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


Use of undefined constant in PHP while generationg directory path

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

配置.php是

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

我使用在其他文件中使用 CB_home 和 FD_home。

我收到错误:

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

我的引导.php是:

<?php 
require_once 'config.php';
require_once CB_HOME.'/AbstractCbRest.php';

哪里出了问题?

我的猜测是include_path设置会干扰您的脚本。因此(如@deceze所述)您可能正在加载不正确(尽管存在)的配置文件.php文件。

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

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

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

$someValue = 'C:''xampp''htdocs''test-bot''testbot'''; $someValue = preg_replace('/''''/u', '''', $someValue);

或者在您的情况下:

define('CB_HOME', preg_replace('/''''/u', '''', realpath(dirname(DIR))));