How to debug php code?

I am new to PHP. Here is my situation. I write my code in vim and put it under / var / www /, then I can use

local/*. Php

to run my code in a browser.

When my code has an error. It just didn't work out.

How can I debug mu code like C ++ or java for example?

Thanks.

Edited by:

The link that some friends provide does not help me. I am on Linux. This is for Win.

+4
source share
7 answers

If on the local host I suggest using firefox or chrome and installing firebug for mozilla, and chrome gets the default value. Make sure that your settings on the local host are mapped to the server you are loading onto, as this can cause problems when switching to live.

In particular, for most shared hosting sites, PHP in safe mode and output buffering is disabled, so if you use it, use it by calling it by calling ob_start (); etc., otherwise you should not have problems, and learning to debug is part of the fun, it helps you learn a lot :)

Regarding php errors, just edit the php.ini file, you can find the relevant information at http://php.net

Happy coding

+7
source

For a more advanced solution, you can use XDebug for PHP.

By default, when XDebug is loaded, it should automatically show backtracking in case of any fatal error. Or you trace to a file (xdebug.auto_trace) to have a very large back trace of the entire request or to perform profiling (xdebug.profiler_enable) or other settings . If the trace file is too large, you can use xdebug_start_trace () and xdebug_stop_trace () to remove the partial trace.

Installation

Using PECL:

pecl install xdebug 

On Linux:

 sudo apt-get install php5-xdebug 

On Mac (with Homebrew):

 brew tap josegonzalez/php brew search xdebug php53-xdebug 

Mine configuration example:

 [xdebug] ; Extensions extension=xdebug.so ; zend_extension="/YOUR_PATH/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; MAMP ; Data xdebug.show_exception_trace=1 ; bool: Show a stack trace whenever an exception is raised. xdebug.collect_vars = 1 ; bool: Gather information about which variables are used in a certain scope. xdebug.show_local_vars=1 ; int: Generate stack dumps in error situations. xdebug.collect_assignments=1 ; bool: Controls whether Xdebug should add variable assignments to function traces. xdebug.collect_params=4 ; int1-4: Collect the parameters passed to functions when a function call is recorded. xdebug.collect_return=1 ; bool: Write the return value of function calls to the trace files. xdebug.var_display_max_children=256 ; int: Amount of array children and object properties are shown. xdebug.var_display_max_data=1024 ; int: Max string length that is shown when variables are displayed. xdebug.var_display_max_depth=3 ; int: How many nested levels of array/object elements are displayed. xdebug.show_mem_delta=0 ; int: Show the difference in memory usage between function calls. ; Trace xdebug.auto_trace=0 ; bool: The tracing of function calls will be enabled just before the script is run. xdebug.trace_output_dir="/var/log/xdebug" ; string: Directory where the tracing files will be written to. xdebug.trace_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into. ; Profiler xdebug.profiler_enable=0 ; bool: Profiler which creates files read by KCacheGrind. xdebug.profiler_output_dir="/var/log/xdebug" ; string: Directory where the profiler output will be written to. xdebug.profiler_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into. xdebug.profiler_append=0 ; bool: Files will not be overwritten when a new request would map to the same file. ; CLI xdebug.cli_color=1 ; bool: Color var_dumps and stack traces output when in CLI mode. ; Remote debugging xdebug.remote_enable=off ; bool: Try to contact a debug client which is listening on the host and port. xdebug.remote_autostart=off ; bool: Start a remote debugging session even GET/POST/COOKIE variable is not present. xdebug.remote_handler=dbgp ; select: php3/gdb/dbgp: The DBGp protocol is the only supported protocol. xdebug.remote_host=localhost ; string: Host/ip where the debug client is running. xdebug.remote_port=9000 ; integer: The port to which Xdebug tries to connect on the remote host. xdebug.remote_mode=req ; select(req,jit): Selects when a debug connection is initiated. xdebug.idekey="xdebug-cli" ; string: IDE Key Xdebug which should pass on to the DBGp debugger handler. xdebug.remote_log="/var/log/xdebug.log" ; string: Filename to a file to which all remote debugger communications are logged. 
+3
source

You can use error_reporting() at the top of your code ...

 error_reporting(E_ALL); 

You will also want display_errors in php.ini .

Please note that you must publish error reports in the production environment.

+2
source

Although I personally find var_dump enough for my php debugging, some people like to use debuggers like xdebug to do this.

0
source

You can check the output log file using PHP. A good way to see your configuration is to use phpinfo () .

You can also set error_reporting () so that you can see the error message instead of the white page.

0
source

PHP creates an error_log file in its directory whenever a problem occurs, you can find debugging information there.

Also try using var_dump($someVarible) . This will give you useful information about the current state of the variable - often better than echo .

0
source

In most cases, if you set error_report to -1, you can see all notifications, warnings, and errors in your browser.

0
source

All Articles