$event_description \n"; // Do the deed $log_write = error_log($log_line, 3, $log_filename); if (!$log_write) { echo "Warning: Unable to write to log ($log_filename) Please check your log_path variable in ampache.cfg.php"; } } // log_event /* * ampache_error_handler * * An error handler for ampache that traps as many errors as it can and logs * them. */ function ampache_error_handler($errno, $errstr, $errfile, $errline) { $level = 1; switch ($errno) { case E_WARNING: $error_name = 'Runtime Error'; break; case E_COMPILE_WARNING: case E_NOTICE: case E_CORE_WARNING: $error_name = 'Warning'; $level = 6; break; case E_ERROR: $error_name = 'Fatal run-time Error'; break; case E_PARSE: $error_name = 'Parse Error'; break; case E_CORE_ERROR: $error_name = 'Fatal Core Error'; break; case E_COMPILE_ERROR: $error_name = 'Zend run-time Error'; break; case E_STRICT: $error_name = "Strict Error"; break; default: $error_name = "Error"; $level = 2; break; } // end switch // List of things that should only be displayed if they told us to turn // on the firehose $ignores = array( // We know var is deprecated, shut up 'var: Deprecated. Please use the public/private/protected modifiers', // getid3 spews errors, yay! 'getimagesize() [', 'Non-static method getid3', 'Assigning the return value of new by reference is deprecated', // The XML-RPC lib is broken (kinda) 'used as offset, casting to integer' ); foreach($ignores as $ignore) { if (strpos($errstr, $ignore) !== false) { $error_name = 'Ignored ' . $error_name; $level = 7; } } if (error_reporting() == 0) { // Ignored, probably via @. But not really, so use the super-sekrit level $level = 7; } if (strpos($errstr, 'date.timezone') !== false) { $error_name = 'Warning'; $errstr = 'You have not set a valid timezone (date.timezone) in your php.ini file. This may cause display issues with dates. This warning is non-critical and not caused by Ampache.'; } $log_line = "[$error_name] $errstr in file $errfile($errline)"; debug_event('PHP', $log_line, $level, '', 'ampache'); } /** * debug_event * This function is called inside ampache, it's actually a wrapper for the * log_event. It checks config for debug and debug_level and only * calls log event if both requirements are met. */ function debug_event($type, $message, $level, $file = '', $username = '') { if (!Config::get('debug') || $level > Config::get('debug_level')) { return false; } if (!$username && isset($GLOBALS['user'])) { $username = $GLOBALS['user']->username; } // If the message is multiple lines, make multiple log lines foreach (explode("\n", $message) as $line) { log_event($username, $type, $line, $file); } } // debug_event ?>