PHP XDebug配置与安装方法详解
我们先要去官网下载下载php_xdebug.dll,2.将下载的php_xdebug.dll放到PHP的安装目录phpext下,然后在编辑php.ini文件
代码如下 | 复制代码 |
[xdebug] |
4.重启Apache。
5.写一个test.php,内容为<?php phpinfo(); ?>,如果输出的内容中有看到xdebug,说明安装配置成功。或者去/home/ad/xdebug_log下看看是不是日志已经出来了。
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的参数显示选项
|
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 |
|
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.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 :
|
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安装好后默认是没有启用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”); |
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 |
今天安装cacti发现需要php sockets扩展,而现在的lnmp没有安装,于是想到了phpzie工具安装扩展,安装方法如下:
linux中打开sockets扩展
代码如下 | 复制代码 |
1.cd php-5.3.8/ext/sockets/ |
接着在/etc/php.ini添加加载扩展代码:
代码如下 | 复制代码 |
1.extension=sockets.so |
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’); } } ?> |
错误信息如下:
PHP Warning: PHP Startup: redis: Unable to initialize module
Module compiled with module API=20050922
PHP compiled with module API=20090626
These options need to match in Unknown on line 0
首先先说下这种错误出现的原因:
执行编译源码包执行phpize的版本与当前php环境中phpize的版本不一致造成的
解决办法:
1、删除编译过的源码包 phpredis-master 以及对应目录中的redis.so 重新解压phpredis-master
2、检测/usr/sbin 目录下是否存在php php-config php-cgi phpize 文件,如果存在删除这些文件 重新建立对应的软连接到这个目录
ln -s php /usr/local/php/bin/php
ln -s php-cgi /usr/local/php/bin/php-cgi
ln -s php-config /usr/local/php/bin/php-config
ln -s phpize /usr/local/php/bin/phpize
以上目录请以php的当前安装目录为准
3、重新进入phpredis-master目录进行安装即可
1.下载在这里 http://dev.freshsite.pl/php-extensions/xhprof.html 如果你下载不下来,可以给16090288@qq.com发邮件,说明版本。
我使用的是wamp 2.2d 32位的 ,这里罗嗦一句,既然用windows的wamp了,就不要装64位了,毕竟都是开发环境,正式环境肯定是32位的
这里下载两个文件 XHProf 0.10.3 for PHP 5.3 vc9.zip xhprof_html.zip
2.安装。 这步骤很简单,把XHProf 0.10.3 for PHP 5.3 vc9.zip里面的dll文件重命名为 php_xhprof.dll 放在php的ext目录下,然后在php.ini配置里面加入配置(不要忘记创建对应的文件夹)
代码如下 | 复制代码 |
[xhprof] |
重启你的wamp即可,看看phpinfo()里面有没有对应的文件
3.使用:
xhprof_html.zip 这个文件解压到你想测试的网站根目录就好了
现在网站一般使用的是框架,唯一入口这点最好了,直接在index.php里面写就好了,我用的是yaf框架
代码如下 | 复制代码 |
<?php // save raw data for this profiler run using default // save the run under a namespace "xhprof_foo" |
这里的pztai换成你自己的域名就好了,本地就localhost分析</a>";//这里的pztai换成你自己的域名就好了,本地就localhost
还在学习使用中,写上几个缩写的
相关文章
- 编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- 这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21- 本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25