Thursday, April 28, 2011

PHP Static functions don't work when directory changes?

I have a class that looks like this:

utils/Result.php

<?php

class Result
{
    public static function ok()
    {
     echo "OK";
    } 
}

If I create the following script

./sandbox.php

<?php

require_once("utils/Result.php");

print_r(Result::ok());

And run it with php sandbox.php it works fine. But if I do the following: cd test && php ../sandbox.php it gives me the following error

PHP Fatal error:  Call to undefined method Result::ok() in /mnt/hgfs/leapback/sandbox.php on line 5

Now, realize that the require statement seems to be working. If I add a property to the Result class, and use print_r on an instance of it, it looks right. But the static methods disappear. I'm very confused. I'm running php 5.2.6.

From stackoverflow
  • Do you have a 'utils/Result.php' file in the directory you have changed to (test)? If yes, it will be included instead of the original file.

    Sean Clark Hess : No. I just made a new directory to be certain. It still happens.
    Sean Clark Hess : Dang... You're all right. I had "include_path" creep because I idiotically set the php.ini path to globally include another project's code. Thanks guys

0 comments:

Post a Comment