我需要debuggingPHP。 我最好的select是什么?

我正在Linux环境下的一个网站上工作(Debian)。 我不是Linux的专家,但我可以处理它,而且网站是使用PHP,MySQL,HTML等制作的。

事情是,我在服务器端使用PHP。 现在,为了testing,我在我的PC上安装了Apache,这样我就可以testing一切。 但是,如果我可以debuggingPHP代码,那将是非常好的。 到目前为止,我不需要它,但现在代码越来越大,这是必须的。

到目前为止,我使用vim,一切都很好,但是,我怎么能在我的情况下debuggingPHP? 我应该安装哪些工具? 他们有空吗?

基本上,我需要知道什么是我的情况下的最佳select。

XDebug提供了一步一步的调试,可以和eclipse PDT,netbeans甚至vim一起使用。 你真的应该试一试。 还有Zend Debugger。

您可以使用调试工具来安装PHP IDE。 它将帮助您逐步调试您的PHP代码。

很少有这个功能的流行:

  • Eclipse (请参阅: 使用Eclipse调试PHP? )
  • NetBeans的
  • NuSphere的PhpED (仅适用于 Windows)

对于更高级的解决方案,您可以手动为PHP安装XDebug扩展。

默认情况下,当加载XDebug时,如果有任何致命错误,应该自动显示回溯。 或者你跟踪到文件(xdebug.auto_trace)有一个非常大的整个请求的回溯或执行分析(xdebug.profiler_enable)或其他设置 。 如果跟踪文件太大,可以使用xdebug_start_trace()和xdebug_stop_trace()来转储部分跟踪。

安装

使用PECL:

pecl install xdebug 

在Linux上:

 sudo apt-get install php5-xdebug 

在Mac(与自制软件):

 brew tap josegonzalez/php brew search xdebug php53-xdebug 

配置示例:

 [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's 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. 

如果您使用apache作为您的web服务器,那么您可以使用apache日志来查看任何错误,以防止成功执行PHP脚本。

你可以使用

 tail -f /var/log/apache2/error.log 

查看apache日志,这将做的工作(至少为PHP相关的错误的一个子集)。

具体来说,如果你是(像我这样的新手,在第一次使用PHP开始之后发现了这个线程),首先尝试找出产生错误消息的原因,首先从error_log开始。 这是将字符串作为“错误消息发送到Web服务器的错误日志或文件”的函数。

一般来说,要了解PHP中错误报告和配置的基本原理,首先从PHP.net上的错误处理函数文档中的函数开始 – 该页petrov dot michael () gmail com的评论由petrov dot michael () gmail com是一个有用的开始。

要实际生成错误,作为新手(最少量文档读取)的最佳选择是从print_r开始。 将print_r的第二个参数设置为TRUE将返回一个字符串,然后您可以将其传递给error_log 。 这可能是最快捷的调试方式,因为你的PHP代码可能位于某个框架内部,并添加到各种输出控制层(如Wordpress)中。

如果你的电脑操作系统是Windows,那么最简单的方法是使用任何Web开发堆栈(WAMP,XAMPP)的CodeLobster免费版我发现设置CodeLobster进行调试非常容易(与eclipse或netbeans相比)CodeLobster的安装是非常小的比较到其他IDE,而且它的免费版本支持全面的调试功能。

你可以找到详细的一步一步的指导如何在后面安装它如何调试PHP – 简单的方法