Possible to turn off E_STRICT for library code but not my code?

error-reporting, php

Solution

You could define a custom error handler, and use the `$errfile` argument to determine where the error came from. If the path matches the path your included library, suppress the error. Otherwise, pass it on to PHP's error reporting.

As far as I can see, this should catch any and all warnings and notices caused by the library.

Because no backtrace is necessary, it's probably even fast enough for a lot of triggered messages.

this is untested but should work, based on the example in the manual:

<?php
// error handler function
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
          
    $library_path = "/path/to/library";
    if (substr($errfile,0,strlen($library_path))==$library_path)
    /* Don't execute PHP internal error handler */
     return true;
    else
    /* execute PHP internal error handler */
     return false;
}

Problem

Is it possible to change the error reporting level (turn off E_STRICT) for files that my PHP application includes with `include` or `require_once`? I'd like to be able to see strict notices that occur in my code, but I'm using PEAR MDB2, and I get pages of warnings from that code when I turn on E_STRICT. I know that it's possible to change `error_reporting` on a per-directory basis with an .htaccess file but I don't think that works with included files. I tried putting it in the pear folder but it did nothing.

Original source