Php 未定义常量通知的使用

Php 未定义常量通知的使用,php,notice,Php,Notice,关于这个问题我已经读了一些,主要是从这里的文章。似乎它通常是由试图执行$foo[bar]而不是$foo['bar]]的人生成的,但我已经检查了多次脚本中出现错误的地方,情况并非如此 我有一个php文件,其中包含以下脚本: define("APP_PATH", "http://localhost/foobar"); require_once APP_PATH . "/classes/controller.php"; 这似乎执行得很好。在controller.php中我有以下代码: requir

关于这个问题我已经读了一些,主要是从这里的文章。似乎它通常是由试图执行
$foo[bar]
而不是
$foo['bar]]
的人生成的,但我已经检查了多次脚本中出现错误的地方,情况并非如此

我有一个php文件,其中包含以下脚本:

define("APP_PATH", "http://localhost/foobar");

require_once APP_PATH . "/classes/controller.php";
这似乎执行得很好。在
controller.php中
我有以下代码:

require_once APP_PATH . "/classes/factory.class.php";

$factory = new factory;
据我所知,这应该执行得很好。但是,我得到了以下错误:
注意:在第3行的C:\wamp\www\foobar\classes\controller.php中使用了未定义的常量APP\u PATH-假定为“APP\u PATH”。第3行是对
require\u的一次调用

我已经检查过了,我相当确信这不会导致错误。我还检查了我的拼写。同一行还触发了关于无法打开流的警告和致命错误,它返回
APP_PATH/classes/factory.class.php
作为路径


任何帮助都将不胜感激。

问题是您来自偏远地区

假设
APP\u PATH.'/classes/controller.php'
如下所示:

<?php
class Some_Controller extends Controller {
    // ...
}
echo 'TEST!';
在Windows中,它将类似于:

C:\path\to\web\classes\controller.php

我觉得这与您使用URI方案来包含文件这一事实有关,因为如果您将一个文件作为URL包含,那么您将获得经过处理的文件。PHP试图处理controller.PHP,以便将其发送到请求文件,但尚未在其中定义常量。我希望这是有意义的:)谢谢你的评论,将定义从基于http://的URL改为有效的。很酷,谢谢你的回复。我将APP\u PATH的定义更改为
dirname(\uuu FILE\uuuuuuu)
,这似乎正常工作。如果您的PHP>=5.3.0,则还可以将其设置为
\uuuuuuu DIR
/path/to/web/classes/controller.php
C:\path\to\web\classes\controller.php