Logging Errors with messages in Codeigniter

Posted by user1260776 on Stack Overflow See other posts from Stack Overflow or by user1260776
Published on 2012-06-06T04:37:37Z Indexed on 2012/06/06 4:40 UTC
Read the original article Hit count: 472

I’m using codeigniter on a production server, and I’m not able to properly log the errors generated to the file. I edited php.ini like this-

error_reporting = E_ALL | E_NOTICE | E_STRICT|E_WARNING
display_errors = Off
log_errors = On
error_log = "/var/log/php-scripts.log" // This is where I would like to log all the errors and notices..

And php-scripts.log is able to show the logs like this-

[06-Jun-2012 03:22:20 UTC] PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:26:06 UTC] PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:05 UTC] PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:07 UTC] PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:11 UTC] PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0 

Now, the “index.php” settings in my “public_html” folder, (i’ve rest of CI folder outside public_html) I’ve these settings-

define('ENVIRONMENT', 'production');

if (defined('ENVIRONMENT'))
{
 switch (ENVIRONMENT)
 {
  case 'development':
   error_reporting(E_ALL);
  break;

  case 'testing':
  case 'production':
   error_reporting(0);
  break;

  default:
   exit('The application environment is not set correctly.');
 }
} 

Though everything seems to be fine, now, I’ll just change Environment to “development”, this is what I get on my website homepage-

A PHP Error was encountered
Severity: Warning

Message: fclose() expects parameter 1 to be resource, null given

Filename: core/Common.php

Line Number: 91


A PHP Error was encountered
Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /home/theuser/codeigniter/system/core/Exceptions.php:185)

Filename: core/Security.php

Line Number: 188

The “rest” of the page is also displayed. And when I look at php-scripts.log, I’m not able to see any of these logs there-

[06-Jun-2012 03:22:20 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:26:06 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:05 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:07 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:11 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:30:45 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
[06-Jun-2012 03:37:41 UTC] PHP Deprecated:  Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0

One more thing is I don’t know how/where codeigniter itself would log all the errors. The permissions of “application/logs” folder is “777”, but there is no log file (I was expecting that CodeIgniter would automatically create a log file, should I create one, if I’ve to log errors there). I’ve set these configurations in config/config.php

$config['log_threshold'] = 4;
$config['log_path'] = '';  //hoping it would log errors at "default" location... 

Ideally, I just wish all those errors, warning, and notices (with messages) that were displayed on my webpage were sent to log-file /var/log/php-scripts.log when the “Environment” is “Production”. If it’s not possible, I would also be fine, If i can log it somewhere else. Now, I’m confused as to what should be the settings in the “index.php” page or some other configuration, so as to supress all the errors and warnings on the webpage when environment is "Production", and send all those errors, warnings, and notices to php-scripts.log. (or any other file)

my php version is PHP 5.3.13 with Suhosin v0.9.33

Please help me with this. Thank you

© Stack Overflow or respective owner

Related posts about php

Related posts about codeigniter