|
Posted by Justin French on 01/19/05 09:32
On 19/01/2005, at 5:36 PM, William Stokes wrote:
> I would like to add some debugging/info code to my pages. In test
> environment of course. Any ideas how to do this? I mean for example to
> print
> to a web page the line number when the script fails or something like
> that.
> It's a pain on the **s to hunt typo's by just reading the source over
> and
> over again.
William,
I start by trying to programatically find out if I'm in a development
or production environment and setting a constant DEV to true or false.
For me, I development things on my desktop Mac, so the server and
client are the same machine, and share the same IP address. So my
check for DEV is if the client IP and server IP match.
<? define('DEV',($_SERVER['REMOTE_ADDR']==$_SERVER['SERVER_ADDR'])); ?>
So, this then gives a constant DEV to test to decide if I'm in the
development or production environment, eg:
Next, I set-up PHP's built-in error reporting for both environments:
<?
if(DEV)
{
ini_set("error_reporting",E_ALL);
ini_set("display_errors",1);
ini_set("log_errors",0);
}
else
{
ini_set("error_reporting",E_ALL ^ E_NOTICE);
ini_set("display_errors",0);
ini_set("log_errors",1);
}
?>
In short, this logs most errors in production (not notices), and dumps
them to the screen if we're in development. You'll already see that
you get quite a lot of information from the errors (line numbers,
reason for the error, etc), and I think this is what you're looking
for.
But so far this only caters to PHP errors triggered by built-in
functions and source. Smarter programmers will build in their own
debugging lines, custom errors and notices to make the tracking down of
bugs and quirks much much easier. For this, you can use
trigger_error() <http://au2.php.net/trigger_error>.
That should be more than enough for the average PHP hack, but there is
of course the option to write your own custom error handler to
customise the look and feel of the error messages, send emails, log
things to a database, etc.
It's all pretty powerful stuff, so read up!
---
Justin French, Indent.com.au
justin.french@indent.com.au
Web Application Development & Graphic Design
[Back to original message]
|