首页 > 编程技术 > php

PHP扩展Xdebug的安装使用实例

发布时间:2016-11-25 15:28

Xdebug是什么?它是一款可以用来调试php代码运行一款工具,下面小编来给大家介绍Xdebug安装方法,下面教程是基于linux与windows系统的哦。

Q:xdebug是什么?

A:xdebug是一个开源的php调试器,以php模块的形式加载并被使用。

上周发现xdebug出了RC(release candidate)2版了,就拿下来安装了一下,顺便写了一个安装手册,希望对大家有用。

linux xdebug模块和相关工具的安装:

测试环境:Ubuntu12.04+PHP 5.3.10

 代码如下 复制代码

# 获取xdebug最新源码包
git clone git://github.com/derickr/xdebug.git
cd xdebug/
# 如果没有安装phpize扩展,请尝试:apt-get install phpize
phpize
./configure --enable-xdebug
make && make install

我这边生成的路径为:/usr/lib/php5/20090626+lfs/xdebug.so
然后更改php.ini文件
自行选择增加这些配置选项

 代码如下 复制代码

[xdebug]
;扩展文件路径
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
 
;开启自动跟踪
xdebug.auto_trace = On
;开启异常跟踪
xdebug.show_exception_trace = On
;开启远程调试自动启动
xdebug.remote_autostart = On
;开启远程调试
xdebug.remote_enable = On
;收集变量
xdebug.collect_vars = On
;收集返回值
xdebug.collect_return = On
;收集参数
xdebug.collect_params = On
;跟踪格式
xdebug.trace_format = 0
;输出文件夹
xdebug.trace_output_dir=/tmp/xdebug
;输出文件名格式
xdebug.trace_output_name = trace.%c.%p
;开启分析器
xdebug.profiler_enable = On
;输出路径
xdebug.profiler_output_dir = /tmp/xdebug
;输出文件名格式
xdebug.profiler_output_name = cachegrind.out.%p
;记录内存使用情况
xdebug.show_mem_delta = On

配置完成后可使用php -i|grep xdebug查询配置好的值


windows系统xdebug模块安装


1、去www.xdebug.org下载相应版本php的模块文件,保存下载后的文件到php的ext目录,可以自己修改文件的名称,如保存成:xdebug-2.0.0RC1.dll
2、修改php.ini,增加如下信息

 代码如下 复制代码

[Xdebug]
zend_extension_ts=”c:/php5/ext/xdebug-2.0.0RC1.dll”
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir=”c:/Temp/xdebug”
xdebug.profiler_enable=on
xdebug.profiler_output_dir=”c:/Temp/xdebug”

参数解释:
zend_extension_ts=”c:/php5/ext/xdebug-2.0.0RC1.dll”
;加载xdebug模块。这里不能用extension=xdebug-2.0.0RC1.dll的方式加载,必须要以zend的方式加载,否则安装上后,phpinfo打印出来的里的xdebug段的会有Must LOADED AS ZEND EXTENSION的警告信息(原因未知)。

xdebug.auto_trace=on;
;自动打开“监测函数调用过程”的功模。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出。此配置项的默认值为off。

xdebug.collect_params=on;
;打开收集“函数参数”的功能。将函数调用的参数值列入函数过程调用的监测信息中。此配置项的默认值为off。

xdebug.collect_return=on
;打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off。

xdebug.trace_output_dir=”c:/Temp/xdebug”
;设定函数调用监测信息的输出文件的路径。

xdebug.profiler_enable=on
;打开效能监测器。

xdebug.profiler_output_dir=”c:/Temp/xdebug”;
;设定效能监测信息输出文件的路径。

还有一些更为具体的参数设定,详见:http://www.xdebug.org/docs-settings.php

3、重启apache

这样,在本地运行php的时候,会在所设定的目录里产生一些调试信息的文件:

函数调用过程监测信息文件的文件名格式:trace.××××××.xt。这个文件可以直接查看,里面包含了函数运行的时间,函数调用的参数值,返回值,所在的文件和位置等信息。内容格式还是相对直观的。
效能监测文件的文件名格式:cachegrind.out.××××××××。
这个文件也可以直接查看,不过信息格式不易被人类所理解,
所以我们需要接下来的一个软件。
二、安装wincachegrind
由于效能监测文件:cachegrind.out.××××××××文件的内容不易被人类所理解,所以我们需要一个工具来读取它。windows下就有一款这样的软件:wincachegrind。
1、到http://sourceforge.net/projects/wincachegrind/下载安装wincachegrind
2、安装运行后,点击Tools->options,设定你的working folder(php.ini里xdebug.profiler_output_dir的值)
这样就可以比较直观的查看效能监测文件的信息了。

另:不知道是哪个参数没有设定正确,我机器上所有的php的运行后的函数调用过程监测信息都写到了一个trace.××××××.xt中,哪个达人要是知道就给指条明路吧

怎么安装PHP开发环境呢,这个对于php初学者来讲可能是个比较麻烦的事情,他需要安装php,mysql,apache或php mysql iis哦,下面小编来介绍第一种。

搭建PHP的开发环境
时间: 8.1日
要求:

手动安装php环境(集成环境不算, 仅winow下即可, linux作参考, 但题linux下也可出).
包括mysql+php+apache+phpadmin, 版本不限. 要求能进行web测试。
安装开发IDE,包括(zend 5+ editplus+emeditor+dreamweaver)
手册:
http://www.php.net/manual/zh/install.windows.php
http://www.php.net/manual/zh/install.windows.apache2.php
http://www.php.net/manual/zh/install.windows.extensions.php


参考内容:
http://www.php.net/manual/zh/install.unix.php
http://www.php.net/manual/zh/install.pecl.php

 

关注内容:phpinfo, 安装成功不成功, 主要看这个!

 

======================================

1、apache、mysql、php的windows下的安装顺序 
答:apache、mysql要在php前安装,apache和mysql的安装顺序随意

2、开启了php_curl扩展,为什么还会提示没有开启curl服务呢,怎么解决?
答:把PHP目录中的libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll文件到system32 目录下后,重启apache

3、在windows下使php工作于apache2.x之中的三种方法?
答:handler、cgi、fastcgi

注:一般模块安装为 handler

========================================

1、当配置好apache php 后在浏览器上输入http://localhost 页面没有相应 是因为没有配置默认页面DirectoryIndex

2、下载    PHP 包时会有这样的问题在下载的PHP 包里没有php5apache2_2.dll扩展,是因为下载包时有两种

3、apache PHP 配置时一般会加上两句话
LoadModule php5_module E:/PHP/php-5.2.10/php5apache2_2.dll #PHP目录
AddType application/x-httpd-php .php #执行php的文件类型
但是总有时会报错 原因看看加的两段有没有多于空格,x-httpd-php后面有空格

==============================================

1.windows下安装环境时,php与apache结合配置时,修改了php与apache的配置文件,重启apache,出现” the requested operation has failed” 如何解决?
答:出现上述错误,无法确定是哪个出问题,可以利用doc命令找出错误原因,首先需进入apache所在目录,然后敲入命令:httpd.exe -w -n "Apache2.2" -k start 
下面会有详细信息说明。
需要注意:保证php目录下面 php5_apache2_2.dll文件存在;
在配置apache时注意引入此文件,并指定到正确目录下;
在编辑apache配置时注意空格问题,如果有多余空格,可能会引起错误;

批注:感觉你的问你是php 跟apache 压根就没有建立联系,不怎么清楚

2.windows下安装php+apache+mysql开发环境,如何配置服务器仅处理get和post请求?
答:配置apache的配置文件如下:
<LimitExcept GET POST>
Deny from all
</LimitExcept>

批注:这个没找到

3.myql安装完成,出现不能“Start service”,这是为什么?
答:

<1.出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;
<2.检查是否按上面一 步所说,之前的密码是否有修改,如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码;
<3.将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要把之前数据库备份;

批注:不知道说得对不对,听着好像是已经装过mysql 但是再装一个就会冲突

==========================================

1,加入调试代码
建立一个debug.php文件。里面可以加入$_GET,$_POST等值。然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹。
如果想添加公共头尾文件一样可以:
在ini中找到 Automatically add files before or after any PHP document.

auto_prepend_file = auto_prepend_file.php;            //依附在头部
auto_append_file = auto_append_file.php;            //依附在尾部

2,如何使Html/PHP格式的字符串不被解释,而是照原样显示
例子:
PHP";

 代码如下 复制代码
Echo "被解释过的: ".$str."经过处理的:";
Echo htmlentities(nl2br($str)); //两次转换后输出。
?>

3,如何配置GD库
1:拷贝dlls文件夹里所有dll文件到system32目录下c:windowssystem32
2:打开php.ini
设置extension_dir = "c:/php/extensions/";
3:extension=php_gd2.dll;把extension前面的逗号去掉,如果没有php_gd2.dll,php_gd.dll也一样,保证确实存在这个文件c:/php/extensions/php_gd2.dll

注: 一般用环境变量, 不需要把dlls文件夹考到c:windowssystem32

===================================================锫奕

1,在判断$_POST全局变量是否有传递过来的参数时,用if可以吗?
答:建议用isset(),if属于判断语句,其里面的变量必须是已经被定义过的,所以不能用if。
批注: 全局变量也称为外部变量,它是在函数外部定义的变量。

注: isset() 判断变量有无声明, 然后再判断其他。如果懒,可以用empty()

$_POST 是全局变量,那就说明它已经是定义过的,所以能用

2,form表单提交时,提交的什么内容?
答:在提交时,提交的是标签的name和value属性,其中name作为键值,value作为数组元素,如果标签没有name属性,那么就不会提交。

批注:我不知道你的提交是指什么,但是我知道如果有提交地址他会找到那个地址,提交后的那个值是空的。是这意思吗?

注: 表单提交时, 如果是get, 就是get, 如果是post, 有编码方式的区别!可以注意一下!另外, 有的最然有name, 但无值时, 用 isset()取不到真。


3,什么是会话?
答:当一个用户访问一个网站时就会建立一个会话,与服务器进行交流,当整个网站的所有页面都被关闭时,会话结束,session也被释放了。

批注:  就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的

这是我百度的 ,不知道对不,我也不怎么懂。但是看上去像那回事,tom讲解

注:会话是浏览器和服务器间保持的一个会话, 会话不是全局级的, 是用户全局级的。一般情况下,这种会是浏览器生命周期, 浏览器关闭, 会话结束! 当然这个也可以配置。见php.ini中的session部分。 当你新打开一个窗口时, 会启动一个新会话,但你从一个旧窗口中打开新窗口, 不会生成新会话(可测一下)。

=======================================================

1.局域网内两台机器apache 可不可以互相访问
可以
修改httpd.conf的配置就可以了。
加入ip是192.168.0.1(这是一个局域网内网ip)
修改Listen的配置为
Listen 192.168.0.1:80 然后重启apache
另外:第一,服务器的防火墙要关,如果你是用xp系统的话,系统自带的防火墙一定要关。
第二,配置问题

 代码如下 复制代码
<Directory "C:/Apache2.2/htdocs">
Order allow,deny
Allow from all
</Directory>

批注:   1.  加入ip是192.168.0.1(这是一个局域网内网ip) 这个应该是在 WindowsSystem32driversetchosts 中加吗?

Tom注:域名配置只是将本机的域名指向哪个IP, 但访问时,也会反host名带过去!

服务器需要配置虚拟主机监控这个IP, 根据host名设分流, 才能访问。

2.  为什么要修改这个 Listen的配置 

注: 表示服务器监听哪个端口

2.php扩展库出ext外还有其他的吗?比如说连接mysql外的数据库的dll,该去哪找?
有很多扩展库,例如curl等,也可以自己写。php_dba.dll和php_oci8.dll应该是php自带的,常用的应该都在php/ext中。

注: window下的dll库,除了自带的外,其他需外他人或自已编译dll. 手册上有如何编译的方法。

3.php怎么发布一个完整的网站项目(windows/linux/unix),直接放在www目录下就可以了吗
答案(网上查的) 
a. 代码仓库直接发布
在服务器上 svn export .... 
b. 如果服务器很多,
(1)在一台发布 服务器上   svn export ...
(2) 然后向别的服务器推送,  rsync ....

批注: 看不懂

注: 只要能发上就行。
=======================================================

1、apache、mysql、php在windows下的过程
答:首先安装apache或mysql数据库,两个都安装成功后,最后安装php

2.安装完成后本地搭建链接在线项目,因数据库链接使用pdo,如何开启pdo扩展?
答:把PHP目录中的php_pdo.dll文件拷贝到system32 目录下,然后打开php.ini,找到extension=php_pdo.dll;把extension前面的分号去掉

3.如何在本地自定义域名访问本地项目,如在本地搭建分站项目
答:链接自定义,例如定义访问地址为:bendi.homelink.com.cn,打开目录:C:WINDOWSsystem32driversetc,找到hosts文件并打开,在末行加入127.0.0.1 bendi.homelink.com.cn,关闭保存!
之后打开httpd.conf进行编辑,加入:

 代码如下 复制代码
NameVirtualHost *:80
<VirtualHost *:80>   
ServerAdmin 邮箱地址
DocumentRoot 项目存放路径
ServerName bendi.homelink.com.cn
</VirtualHost>

加入后保存关闭,之后重启apache和浏览器就可以直接以自定义域名进行访问了

curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。

php安装好后默认是没有启用curl功能扩展的,下面几个步骤可以开启此项功能扩展。

windows 安装curl


1、打开PHP安装目录,搜索以下三个文件 ssleay32.dll、libeay32.dll和 php_curl.dll,一一拷贝到系统目录下的system32文件夹下,

2、修改php.ini文件,找到;extension= php_curl.dll行,去掉前面的;号,保存,重启服务器。
3、测试,在站点目录下建立一个PHP文件,内容如下

 代码如下 复制代码

$ch = curl_init(“http://www.111cn.net”);
curl_exec($ch);
curl_close($ch);

linux安装curl

假如原先编译的php目录在/usr/local/php5目录下;
apache在/usr/local/apache2目录下;
php源代码在/home/kevin125/src目录下。

如果实际目录与假定的目录不一致,则在下面的命令中做调整。

1. 找到当前运行的php版本的源代码目录,如 php-5.2.10。

进入curl扩展库目录。

 代码如下 复制代码
$cd /home/kevin125/src/php-5.2.10/ext/curl

2. 调用phpize程序生成编译配置文件。

 代码如下 复制代码
$/usr/local/php5/bin/phpize

3. 编译扩展库,分别执行下面的configure和make命令。

 代码如下 复制代码
$./configure –with-php-config=/usr/local/php5/bin/php-config

configure这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。
$make

make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下,如 /home/kevin125/src/php-5.2.10/ext/curl/modules/curl.so

4. 配置php.ini文件
将编译好的扩展库文件复制到apache2 modules目录下。

 代码如下 复制代码
$cp /home/kevin125/src/php-5.2.10/ext/curl/modules/curl.so /usr/local/apache2/modules/

找到php.ini文件所在目录位置,然后编辑。可以通过查看phpinfo信息来确定php.ini文件位置。
在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下

 代码如下 复制代码
extension_dir = “/usr/local/apache2/modules/”

在php.ini的设置扩展库位置,设置要添加的扩展库。

 代码如下 复制代码
extension=curl.so
XDebug是php的一款调试工具了,我们可使用像echo,print等等来调用错误,但我们这些函数没办法检查函数执行次数与执行时间了,而利用XDebug就完全可以实现哦,下面我来介绍在winodws中php XDebug配置与安装过程。

 我们先要去官网下载下载php_xdebug.dll,2.将下载的php_xdebug.dll放到PHP的安装目录phpext下,然后在编辑php.ini文件

 代码如下 复制代码

[xdebug]
zend_extension = "/home/ad/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.auto_trace = on
xdebug.auto_profile = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.trace_output_dir = "/home/ad/xdebug_log"
xdebug.profiler_output_dir = "/home/ad/xdebug_log"

4.重启Apache。
5.写一个test.php,内容为<?php phpinfo(); ?>,如果输出的内容中有看到xdebug,说明安装配置成功。或者去/home/ad/xdebug_log下看看是不是日志已经出来了。

Xdebug配置信息

PHP Xdebug配置信息

Xdebug部分配置选项说明

  xdebug.auto_trace = 1

  是否允许Xdebug跟踪函数调用,跟踪信息以文件形式存储,默认值为0

  collect_params = 1

  是否允许Xdebug跟踪函数参数,默认值为0

  xdebug.collect_return = 1

  是否允许Xdebug跟踪函数返回值,默认值为0

  xdebug.profiler_enable = 1

  打开xdebug的性能分析器,以文件形式存储,这项配置是不能以ini_set()函数配置的,默认值为0

  xdebug.profiler_output_dir

  性能分析文件的存放位置,默认值为/tmp

  xdebug.profiler_output_name

  性能分析文件的命名规则,默认值为cachegrind.out.%p

  xdebug.trace_output_dir

  函数调用跟踪信息输出文件目录,默认值为/tmp

  xdebug.trace_output_name

  函数调用跟踪信息输出文件命名规则,默认为trace.%c

设置选项

Category Setting Description

 

日志

xdebug.trace_output_dir

日志追踪输出目录
xdebug.trace_output_name 日志文件名,xdebug提供了一系列的标识符,生成相应格式的文件名,具体请参考官网
xdebug.trace_options 记录添加到文件中方式:1 = 追加(如果存在该文件). 0 (default) = 覆盖(如果存在该文件)
显示数据 xdebug.collect_params 非零值 = 控制function的参数显示选项
  • 0 = 不显示.
  • 1 = 参数类型,值  (例如:array(9)).
  • 2 = 同上1,只是在CLI模式下略微有区别
  • 3 = 所有变量内容
  • 4 = 所有变量内容和变量名(例如:array(0 => 9)).
xdebug.collect_return 1 = 显示function返回值. Default 0 不显示
xdebug.collect_vars 1 = 显示当前作用域使用了哪些变量,显示变量名,该选项不会记录变量的值,如果需要,使用xdebug.collect_params
xdebug.collect_assignments 1 = 添加一行显示变量赋值(若为1,形如$a = 1;这类Assignment Expression会在trace文件里显示)
格式 xdebug.trace_format
  • 0 = 人可读. 从左至右每列分别表示:时间点, 内存, 内存差 (需要设置xdebug.show_mem_delta=1), 等级, 函数名,函数参数 (需要设置,xdebug.collect_params=1,只要是非零), 当前代码行所在文件名 , 行号.
  • 1 = 机器可读[1]. 需要借助第三方app,例如:xdebug trace file parser 或者 xdebug trace viewer
  • 2 = html格式 即table,用browser打开,显示table
xdebug.show_mem_delta 1 = 显示每次函数调用内存消耗(内存差)
行为  xdebug.auto_trace 1 = 打开自动追踪. (追踪方式有2种,一种是自动追踪,所有php脚本运行时,都会产生trace文件;另一种是触发方式追踪,如下)
xdebug.trace_enable_trigger[2]

1 = 使用 XDEBUG_TRACE GET/POST 触发追踪, 或者通过设置cookie XDEBUG_TRACE. 为了避免每次请求时,都会生成相应trace追踪文件,你需要把auto_trace设置为0

注:该特性只在2.2+版本才能设置

 [xdebug-general] Re: Is trace_enable_trigger defunct? 

限制 xdebug.var_display_max_depth 数组和对象元素显示深度:主要用在数组嵌套,对象属性嵌套时,显示几级的元素内容. Default 3.
xdebug.var_display_max_data 变量值为字符串时显示多长. Default 512.
xdebug.var_display_max_children 数组和对象元素显示的个数. Default 128

一些自定义函数

Function Description
void xdebug_enable() 手动打开,相当于xdebug.default_enable=on
void var_dump() 覆写php提供的var_dump,出错时,显示函数堆栈信息,(前提:php.ini里html_errors为1),使用xdebug.overload_var_dump 设置是否覆写
void xdebug_start_trace( 
string trace_file_path 
[, integer options] )
手动控制需要追踪的代码段
trace_file_path :文件路径(相对或绝对,若为空).如果为空,或者不传参, 使用xdebug.trace_output_dir设置的目录
options :
  • XDEBUG_TRACE_APPEND: 1 = 追加文件内容末尾, 0 = 覆写该文件
  • XDEBUG_TRACE_COMPUTERIZED:
    • 2 =同 xdebug.trace_format=1 .
  • XDEBUG_TRACE_HTML: 4 = 输出HTML表格,浏览器打开为一table
void xdebug_stop_trace() 停止追踪,代码追踪在该行停止
string xdebug_get_tracefile_name() 获得输出文件名,与 xdebug.auto_trace配合使用.
void xdebug_var_dump([mixed var[,...]])  输出变量详细信息,相当于php里的var_dump,具体显示请看这里
xdebug.show_local_vars  默认为0,不显示;非零时,在php执行出错时,显示出错代码所在作用域所有本地变量(注:这会产生大量信息,因此默认是closed),具体显示差别如下图[3]
array xdebug_get_declared_vars() 显示当前作用域中已声明的变量
array xdebug_get_code_coverage() 显示某一段代码内,代码执行到哪些行[4]

本文章来给各位同学详细介绍关于php sockets扩展安装配置详解,希望此方法对各位同学有帮助。

今天安装cacti发现需要php sockets扩展,而现在的lnmp没有安装,于是想到了phpzie工具安装扩展,安装方法如下:

linux中打开sockets扩展

 代码如下 复制代码

1.cd php-5.3.8/ext/sockets/
2./usr/local/php/bin/phpize
3../configure --enable-sockets --with-php-config=/usr/local/php/bin/php-config
4.make
5.make install

接着在/etc/php.ini添加加载扩展代码:

 代码如下 复制代码

1.extension=sockets.so
service php-fpm reload或service httpd reload

windows下打开sockets扩展

如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释:
extension=php_sockets.dll
如果你无法去掉注释,那么请使用下面的代码来加载扩展库:

 代码如下 复制代码
<?php
if(!extension_loaded(‘sockets’))
{
if(strtoupper(substr(PHP_OS, 3)) == “WIN”)
{
dl(‘php_sockets.dll’);
}
else
{
dl(‘sockets.so’);
}
}
?>
标签:[!--infotagslink--]

您可能感兴趣的文章: