Created
March 30, 2016 17:41
-
-
Save jerclarke/81f06503ca5f09bb0895332a54e1b54c to your computer and use it in GitHub Desktop.
Simple PHP script to test display of errors including a fix for displaying inline errors in HHVM
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Test display of errors in HHVM/PHP | |
* | |
* In HHVM and often in normal PHP I want to see notices and errors inline to the | |
* document. This script tests the ability to make errors visible and has a solution | |
* that so far works in all the modern PHP and HHVM versions I tried. | |
*/ | |
echo "<h1>Error test document for PHP</h1>"; | |
/* | |
* SOLUTION: use set_error_handler() to explicitly define our expected behavior | |
*/ | |
echo "<h2> SOLUTION FOR HHVM: use set_error_handler() to explicitly define our expected behavior</h2>"; | |
echo "<code>set_error_handler(function ($errorNumber, $message, $errfile, $errline) { | |
switch ($errorNumber) { | |
case E_ERROR : | |
$errorLevel = 'Error'; | |
break; | |
case E_WARNING : | |
$errorLevel = 'Warning'; | |
break; | |
case E_NOTICE : | |
$errorLevel = 'Notice'; | |
break; | |
default : | |
$errorLevel = 'Undefined'; | |
} | |
echo '<br/><b>' . $errorLevel . '</b>: ' . $message . ' in <b>'.$errfile . '</b> on line <b>' . $errline . '</b><br/>'; | |
});</code>"; | |
set_error_handler(function ($errorNumber, $message, $errfile, $errline) { | |
switch ($errorNumber) { | |
case E_ERROR : | |
$errorLevel = 'Error'; | |
break; | |
case E_WARNING : | |
$errorLevel = 'Warning'; | |
break; | |
case E_NOTICE : | |
$errorLevel = 'Notice'; | |
break; | |
default : | |
$errorLevel = 'Undefined'; | |
} | |
echo '<br/><b>' . $errorLevel . '</b>: ' . $message . ' in <b>'.$errfile . '</b> on line <b>' . $errline . '</b><br/>'; | |
}); | |
error_reporting(E_ALL); | |
ini_set("display_errors", "On"); | |
echo "<h2>Test a notice-generating error</h2>"; | |
echo "<code>echo \$undefined_variable;</code>"; | |
echo "<code style='margin:1em;padding:1em;background:#ddd;display:block;'>"; | |
echo $undefined_variable; | |
echo "</code>"; | |
echo "<h2>Test a fatal error</h2>"; | |
echo "<code>\$not_a_class = ''; | |
\$not_a_class->not_a_method();</code>"; | |
echo "<code style='margin:1em;padding:1em;background:#ddd;display:block;'>"; | |
$not_a_class = ''; | |
$not_a_class->not_a_method(); | |
echo "</code>"; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment