Solution:
You have @ini_set(‘display_errors’, 0); – which will tell PHP (not WordPress) to stop displaying errors. WordPress requires errors to be turned on in order for it to pass them to the appropriate place. define(‘WP_DEBUG_DISPLAY’, false); or define(‘WP_DEBUG’, false); should take care of hiding them on the front end for you.
Also, you should only need to define the constants, the IF statement you’ve created isn’t necessary. What you’re essentially saying there is “Turn on error reporting. Now, if error reporting is turned on, do this.” – although logically correct, it’s verbose. Simply defining the WP_DEBUG constant as true should be enough, as WordPress will do the rest of the work.
Also – if wp_debug.log doesn’t exist- WordPress will create it for you (with the correct permissions), assuming it has permission to do so on your server (in most cases this will be true). So – you shouldn’t need to change the CHMOD values of wp-content or it’s children. I’d advise you to change them to WordPress’ recommended values (755 for folders, and 644 for files) – as a CHMOD value of 777 is pretty foolhardy to have.
You should only need the following:
define(‘WP_DEBUG’, true); // Turn on WP Debugging
define(‘WP_DEBUG_LOG’, true); // Log errors to wp_debug.log
define(‘WP_DEBUG_DISPLAY’, false); // Turns off error reporting on the front end