I want codeigniter to echo php errors instead of 500 internal error

12,984

As mentioned in the comment I'm doubtful that this is CodeIgniter's issue. It's more likely that you simply have display_errors set to off in your php.ini.

If I remember correctly, CI's index.php contains a call to ini_set('error_reporting', ..); to change the default behaviour anyway, so you could always look in there first and see what's going on.

Just had a look, here's the default:

/*
|---------------------------------------------------------------
| PHP ERROR REPORTING LEVEL
|---------------------------------------------------------------
|
| By default CI runs with error reporting set to ALL.  For security
| reasons you are encouraged to change this when your site goes live.
| For more info visit:  http://www.php.net/error_reporting
|
*/
    error_reporting(E_ALL);

If you simply add under there ini_set('display_errors', 1);, it should start working just fine. Obviously the best bet would be to add a switch for your environment to set these variables, I'm not sure why it's not like that already, but here's an example:

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
            ini_set('display_errors', 1);
            break;
        case 'production':
            error_reporting(0);
            ini_set('display_errors', 0);
            break;
    }
}
Share:
12,984
Mohammad Naji
Author by

Mohammad Naji

open source codeigniter and php developer

Updated on June 16, 2022

Comments

  • Mohammad Naji
    Mohammad Naji about 2 years

    I have currently set my Codeigniter root index.php's environment variable to development.

    And I haven't also enabled tiny URL mode.

    I don't like to check /var/log/apache2/error.log every night and day!

    Want my PHP errors back to the page. 500 Internal error is really the *HARD*est method that can be used to show the error.

    Note that we are working on an Ubuntu 12.04 LTS server with default config.