Php – Codeigniter Command line error – PHP Fatal error: Class ‘CI_Controller’ not found

codeignitercommand linePHP

After following the user guide instructions found here: http://ellislab.com/codeigniter/user-guide/general/cli.html I'm unable to run the test script via command line.

My controller located at /var/www/mysite/application/controllers/

    class Tools extends CI_Controller {

    public function message($to = 'World')
    {
        echo "Hello {$to}!".PHP_EOL;
    }
}

In my browser I can access

http://mysite/tools/message/ben

And the function correctly outputs "Hello ben"

From terminal I should be able to run:

$ php index.php tools message "Ben"

My terminal should print: "Hello Ben"

However I get the following error:

PHP Fatal error: Class 'CI_Controller' not found in /var/www/mysite/system/core/CodeIgniter.php on line 233

My server is pretty standard; ubuntu LAMP. Codeigniter is pretty standard too and I have no problem running non CI scripts via command line

My PHP binary is only located in /usr/bin/php <– This post suggests an issue running CI directly from usr/bin/php, however I'm not operating a shared PHP service, and I don't see why this would make a difference to how PHP executes a CI script.

Any help or just an indication on how to debug this would be greatly appreciated.

Thanks in advance.

Best Answer

Solved! (partly) the issue was CodeIgniters error logging.

In application/config/config.php, I modified the following config property:

$config['log_threshold'] = 0;

This disables logging, and allows $ php index.php to execute.

If anyone can explain why CI only shows this error on CLI PHP - might help anyone else who has this issue and needs it resolved with error logging on.

Related Topic