1

我已经阅读了一些关于这个问题的内容,主要来自这里的文章。似乎它通常是由试图$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作为路径返回。

任何帮助将非常感激。

4

1 回答 1

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
于 2013-08-04T05:00:08.690 回答