Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 967731
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T02:21:59+00:00 2026-05-16T02:21:59+00:00

My site is completely custom, as such I like to know when I have

  • 0

My site is completely custom, as such I like to know when I have poorly written code. I use set_exception_handler and set_error_handler to use custom classes to log errors to a file. This includes notices and warnings.

Within my own code, this is fine as I get very few logs and those that I do get are things I actually want to fix.

However, i’ve just started using simplePie and because it’s PHP4 compatible I get tons of notices, primarily for things like calling functions statically or passing things by reference incorrectly.

It’s too much for me to go through and fix simplePie, if it wasn’t I wouldn’t be using it in the first place.

Is there a way that I can specifically ignore errors generated by a certain file or class? Here’s an overview of what of my very basic exception handling looks like:

    set_exception_handler("CustomExceptionHandler");
    set_error_handler("customErrorHandler");

    /**
     * CustomExceptionHandler()
     *
     * This is used if an exception is thrown that isn't caught.
     *
     * @param   object  $e  The exception as an object
     */
    function CustomExceptionHandler(Exception $e) {
        exitToError($e->getMessage());
    }

    /**
     * customErrorHandler()
     *
     * This is called for any errors no matter what their level.
     */
    function customErrorHandler($errno, $errstr, $errfile, $errline) {
        if(in_array($errno, array(E_USER_ERROR, E_RECOVERABLE_ERROR))) {
            throw new CustomErrorException($errstr, 0, $errno, $errfile, $errline);
        } else {
            CustomException::logError($errstr, $errno, $errfile, $errline);
        }
        return FALSE;
    }

/**
     * class CustomErrorException
     *
     * Used by custom_error_handler() to convert all fatal
     * errors to exceptions.
     *
     * @see custom_error_handler()
     * @see http://www.php.net/manual/en/class.errorexception.php
     */
    class CustomErrorException extends CustomException {
        /**
         * $severity
         *
         * The severity level of the exception
         *
         * @access  protected
         * @var     int
         */
        protected $severity;

        /**
         * __construct()
         *
         * Constructs the new exception
         *
         * @access  public
         * @param   string  $message    The Exception message
         * @param   int     $code       The Exception code
         * @param   int     $severity   The severity level of the exception
         * @param   string  $filename   The filename where the exception was thrown
         * @param   int     $lineno     The line number where the exception was thrown
         */
        public function __construct($message, $code = null, $severity = E_ERROR, $filename = null, $lineno= null) {
            $this->message  = $message;
            $this->code     = $code;
            $this->severity = (int)$severity;
            $this->file     = $filename;
            $this->line     = $lineno;

            self::logError($this->message,$this->code,$this->file,$this->line,$this->getTraceAsString());
        }
    }

    /**
     * class CustomException
     *
     * Overwrites Exception to give us more control on how
     * exceptions are handled and logged.
     *
     * @see http://www.php.net/manual/en/language.exceptions.extending.php
     */
    class CustomException extends Exception {

        /**
         * __construct
         *
         * We call the parent contruct as we still want it to do all its magic. We just want
         * overwrite this method so that we can log the error exactly how we want.
         */
        public function __construct($message, $code = 0, Exception $previous = NULL) {
            parent::__construct($message, $code);
            self::logError($this->getMessage(),$this->getCode(),$this->getFile(),$this->getLine(),$this->getTraceAsString());
        }

        /**
         * __toString()
         *
         * We overwrite this function so that we can use our stringBuilder function.
         */
        public function __toString() {
            return self::stringBuilder($this->getMessage(),$this->getCode(),$this->getFile(),$this->getLine(),$this->getTraceAsString());
        }

        /**
         * stringBuilder()
         *
         * We use this method so that we have a standard method of building error
         * strings that anything can tap into.
         *
         * @access  public
         * @param   string  $message    the exception message
         * @param   int     $code       the code assigned to this exception
         * @param   string  $file       the file where the exception occurred
         * @param   int     $line       the line where the exception occurred
         * @param   string  $trace      backtrace
         */
        public function stringBuilder($message, $code, $file, $line, $trace='') {
            //return "[".date("d-M-Y H:i:s")."] ".$this->getMessage()." in ".$this->getFile().":".$this->getLine()."\nStack trace:\n".$this->getTraceAsString()."\n";
            return "[".date("d-M-Y H:i:s")."] ".$message." in ".$file.":".$line."\n";
        }

        /**
         * logError()
         *
         * We use a method so that we have a standard way of saving errors
         * to a log.
         *
         * We use XML because it's easy to parse.
         *
         * @access  public
         * @param   string  $message    the exception message
         * @param   int     $code       the code assigned to this exception
         * @param   string  $file       the file where the exception occurred
         * @param   int     $line       the line where the exception occurred
         * @param   string  $trace      backtrace
         * @todo    We could improve it to write to the xml file using DomDocument
         *          as laid out here http://www.xml-training-guide.com/append-delete-data-from-xml-using-php.html
         */
        public function logError($message, $code, $file, $line, $trace='') {
            //Save it to a standard text file to guarentee saving the error
            file_put_contents(ROOT_URL.ERROR_LOG_TXT,self::stringBuilder($message, $code, $file, $line, $trace),FILE_APPEND);
        }
    }

and here is an example of two of the errors simplePie throws up:

[01-Aug-2010 00:50:33] Assigning the return value of new by reference is deprecated in ***\SimplePie.php:738
[01-Aug-2010 00:50:34] Non-static method SimplePie_Misc::parse_date() should not be called statically in ***\SimplePie.php:60
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T02:21:59+00:00Added an answer on May 16, 2026 at 2:21 am

    Is there a way that I can specifically ignore errors generated by a certain file or class?

    Should be easy! You could check in your custom error handler

    function customErrorHandler($errno, $errstr, $errfile, $errline)
    

    whether $errfile is in one of the simplePie files, and in that case return true; silently.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I would like to migrate a site, but the new URL's are completely different
This is driving me completely insane. I have Disqus installed on my site and
Ok guys, need to turn off the cookies in my ASP.net site completely I'm
I wrote a site using ASP.NET MVC, and although it is not completely SEO
I have a list of URLs such as, http://www.mywebsite.com/page.php?genus=A_GENUS&species=A_SPECIES&id=12345 . I would like to
I'm hoping to use a custom richfaces skin to handle the bulk of my
I am embedding the ESRI Map Control into a custom ActiveX control written in
I have created a feature, a publishing site, in Visual Studio to MOSS -
Using IIS 7.5 I have created a custom 404 (and 403.14) error page that
We have a drupal site and we wish to export data from this site

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.