Question

I've read up on this problem a little, mainly from articles on here. It appears that it is typically generated by someone trying to do $foo[bar] instead of $foo['bar'], but I have checked several times around where the error is occuring in my script and this is not the case.

I have a php file, which contains the following script:

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

require_once APP_PATH . "/classes/controller.php";

This appears to be executing fine. Inside controller.php I have this code:

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

$factory = new factory;

This, to my knowledge, should execute perfectly fine. However, I am getting the following error: Notice: Use of undefined constant APP_PATH - assumed 'APP_PATH' in C:\wamp\www\foobar\classes\controller.php on line 3. Line 3 is the call to require_once.

I have checked, I am fairly sure that this should not be causing an error. I've also checked my spelling. The same line also triggers a warning and a fatal error about failing to open the stream, it is returning APP_PATH/classes/factory.class.php as the path.

Any help would be much appreciated.

Était-ce utile?

La solution

The problem is that you are including from a remote place.

Let's say that APP_PATH.'/classes/controller.php' is as follows:

<?php
class Some_Controller extends Controller {
    // ...
}
echo 'TEST!';

When you include it through HTTP the PHP interpreter will parse the file before sending it back to be included:

<?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!';")

In order to fix this you need to include from the local environment. In Linux it would be some like

/path/to/web/classes/controller.php

In Windows it would be something like:

C:\path\to\web\classes\controller.php
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top