Support » Developing with WordPress » No error email and no entry in debug log

  • Resolved Zoker

    (@zoker)


    Hi there,

    I’m currently developing a custom plugin for a client. I get this error, when visiting the page:

    There has been a critical error on your website

    The problem is, that I did not receive any email and the debug.log file is empty. So I have no idea, what the issue is and therefore can’t fix it.

    These are the debug settings in my config file:

    
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', true );
    @ini_set( 'display_errors', 1 );
    @ini_set('error_reporting', E_ALL);
    

    I even installed this plugin, to log the sent emails: https://wordpress.org/plugins/post-smtp/

    But no new email is shown there. The test email within the plugin is sent successfully, so email delivery seems to work.

    Is there any way for me to get the error?

    Thanks!

Viewing 6 replies - 1 through 6 (of 6 total)
  • Moderator bcworkz

    (@bcworkz)

    Add this to wp-config.php:
    define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );
    This will suppress the critical error message and the emailing behavior. Any PHP errors should be visible when you visit the site because WP_DEBUG is true.

    Note that these two constants should normally be defined as false on production sites for better security. Assuming of course that the production site is error free.

    Thread Starter Zoker

    (@zoker)

    Hi bcworkz,

    Thanks for your help!

    Now the browser just display its 500 error page, but still not entry in the log file.

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );


    (I changed the displayed url in the error on purpose)

    Do you have any idea, why I still get no errors in my log? Thanks!

    Moderator bcworkz

    (@bcworkz)

    Ugh. 500 errors are difficult to resolve because of the lack of specificity. When I’ve encountered it, it’s usually because I just made a stupid blunder and correction is a matter of undoing what I just did.

    Do you know what has changed since the site was working? Can you revert back to a last known good version? Do think it’s an issue with your plugin? If your plugin is the cause, you can disable it by changing its folder name via FTP or the hosting file manager.

    Finding what is wrong within the plugin can still be difficult without some idea about what has changed. If you’re not sure, comment out anything done recently that might be the cause. Doing so may cause other errors, but any error message is better than 500. Uncomment the commented out code in smaller sections until the 500 recurs. By removing and restoring increasingly smaller sections of code, you will eventually zero in on the exact cause.

    Thread Starter Zoker

    (@zoker)

    Hi hcworkz,

    Thanks for these comprehensive and good hints!
    In the meantime I managed to find the cause: It was indeed a line in my plugin, which I managed to find with a try-catch block (then wordpress decided to show me the error). I used the mpdf library and a faulty function call caused it.

    I developed many custom function within child themes and also some custom plugins and 99% of the time, I found the error message inside the debug.txt file. But with the recent change in the wordpress error handling, I’m not able to catch many of these self caused issues anymore. So while I understand, that it is always better to not view the error publicly, in this case neither the error email was send nor a entry in the debug log file where made. This makes it very hard for me to find the error. Thus I tried to find a solution here, that helps me to identify issue in the future easily. Thanks for your help! Have a nice week 🙂

    Moderator bcworkz

    (@bcworkz)

    You’re welcome! There are a LOT of WP site owners with no tech skills at all. The default WP error handler is meant for them. It’s completely impractical to develop with it in place, hence the reason the disabling constant is available. It’s best used in a separate development environment where error display isn’t any security issue. The WP error handler is still best left in place on production servers because many hosts don’t have their PHP configured to suppress error messages. It is actually useful to get an email should a site that’s not closely monitored go down. Now if that email could only be reliably delivered…
    It’s an issue external to WP, it’s doing what it can.

    Thread Starter Zoker

    (@zoker)

    Yea that definitely true, this is a good default behaviour. And next time I get such a issue I try to first enable this constant and figure out, if I can solve the issue with that. Again thank you very much! 🙂

Viewing 6 replies - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.