PHP常量未定义 - 但它们已定义!

时间:2010-07-09 11:24:40

标签: php constants

我正在使用常量在脚本中设置各种配置变量。

INC_PATH常量在包含类库的脚本中定义。

define('INC_PATH',$_SERVER['DOCUMENT_ROOT'].'includes/');
include('class.lib.php');

类库包含各种include('someClass.php')行。它还包含:

require(INC_PATH.'DB.class.php');

类库抛出一个通知:

Use of undefined constant INC_PATH - assumed 'INC_PATH'

类库如何才能看到已定义INC_PATH常量?我认为常数是全局的?

5 个答案:

答案 0 :(得分:8)

是的,但必须在之前定义:

<?php
echo INC_PATH; //undefined
define('INC_PATH', "foo");
echo INC_PATH; //defined

回应您的评论

我无法重现:

a.php只会

<?php
define('INC_PATH',$_SERVER['DOCUMENT_ROOT']."/");
include('b.php.inc');

b.php.inc

<h1><?php require(INC_PATH . "c.php.inc"); ?></h1>

c.php.inc

<?php echo INC_PATH; ?>

要求a.php给出:

<h1>U:/htdocs/</h1>

答案 1 :(得分:-1)

一个疯狂的猜测(虽然值得检查):如果您的行

,可能会出现此通知
include('class.lib.php');
INC_PATH 常量声明之前

被称为


修改您的类库文件并验证实际包含该文件的人:

throw new Exception('err'); //-- Verify the stack trace !
require(INC_PATH.'DB.class.php');

答案 2 :(得分:-1)

答案 3 :(得分:-1)

答案 4 :(得分:-2)

你确定这确实是问题吗?在访问数组时,如果没有键的引号,则会错误地显示此错误消息:

$array[value]
// instead of:
$array['value']

错误消息中添加的单引号是指标,引号不会添加到常量。