我稍微阅读了这个问题,主要来自这里的文章。看起来它通常是由试图$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;
据我所知,这应该完美无缺。但是,我收到以下错误:Notice: Use of undefined constant APP_PATH - assumed 'APP_PATH' in C:\wamp\www\foobar\classes\controller.php on line 3
。第3行是对require_once
的调用。
我已经检查过,我很确定这不应该导致错误。我也检查了我的拼写。同一行还会触发警告以及关于无法打开流的致命错误,它会返回APP_PATH/classes/factory.class.php
作为路径。
非常感谢任何帮助。
答案 0 :(得分:2)
问题是你是从一个偏远的地方来的。
假设APP_PATH.'/classes/controller.php'
如下:
<?php
class Some_Controller extends Controller {
// ...
}
echo 'TEST!';
当你通过HTTP包含它时,PHP解释器会在将文件发回之前对其进行解析:
<?php
include APP_PATH.'/classes/controller.php';
// This will print "TEST!" to the page because PHP has
// parsed the code and the only thing in the output
// buffer is "TEST!" (from the "echo 'TEST!';")
为了解决此问题,您需要包含本地环境。在Linux中,它会像
一样/path/to/web/classes/controller.php
在Windows中,它将类似于:
C:\path\to\web\classes\controller.php