您的位置:首页 > 编程语言 > PHP开发

在vim中 安装php的xdebug和 vdebug插件, 在vim中进行调试php代码

2018-02-03 12:15 465 查看
在vim中 安装php的xdebug和 vdebug插件, 在vim中进行调试php代码

参考: http://www.cnblogs.com/qiantuwuliang/archive/2011/01/23/1942382.html

在vim下 安装vdebug参考 http://blog.csdn.net/guyue35/article/details/53968611

在bash下, 输出多行文字到文件中:

使用的是cat命令, 而不是echo命令

cat本身是读取文件中的内容 连接输出 standard output, 所以可以重定向到另一文件中, 如果不重定向就 会将 多行文字 直接输出到屏幕.

cat本身是 concatenate 连接的意思. 如果不指定输入文件, 就是从标准输入读取内容.

cat 输出多行用 两个
<<
符号加标识符来界定.

xdebug使用的协议好像有两种, 其中一种就是 dbgp: 即: debug protocol

注意xdebug在php.ini中的配置 节, 可能需要区分大小写, 即可能是 xdebug, 或Xdebug?

由于php已经安装好了, 然后这时再来安装xdebug这个php的扩展模块, 而不是在一开始就将xdebug编译进php的,所以要通过phpize来作为外挂模块安装.

通过下载源码,进行编译安装xdebug, 这样做的目的和结果 就是要得到一个xdebug.so这样的模块, 然后将这个模块拷贝到 /usr/lib/php/modules/目录下.

为什么在下载 的 xdebug.tgz的源码目录中没有 configure文件呢? 这是因为, 首先需要在 解压缩后的 源码目录中, 运行 phpize命令, 这时才会生成configure文件. 然后执行 ./configure --with-xdebug --with-php-config=/etc/php.ini ?

[root@localhost xdebug-2.5.0]# phpize

Can't find PHP headers in /usr/include/php

The php-devel package is required for use of this command.

[root@localhost xdebug-2.5.0]#

要首先安装php-devel及其依赖包后,然后 再次执行 phpize, 得到正确的输出:

[root@localhost xdebug-2.5.0]# phpize

Configuring for:

PHP Api Version: 20131106

Zend Module Api No: 20131226

Zend Extension Api No: 220131226

这时再次 ls xdebug的源码目录下, 就会看到 configure 文件了.

rc0, rc1, rc2等版本, 是指 release candidate发行候选版本,或就是候选版本, 基本上就是不会有什么改动的 即将要发行的正式版.

参考http://www.aichengxu.com/linux/5121887.htm

在php.ini的最后, 需要增加的 xdebug 节的内容是:

[XDebug]

/* 这里一定要用 zend_extension, 不能只是用extension. 就是要用zend方式加载
[root@localhost html]# ls /usr/lib/php/modules/
bcmath.so    ftp.so       mysql.so       smbclient.so  wddx.so
bz2.so       gd.so        pdo_mysql.so   sockets.so   __ xdebug.so __
*/
zend_extension="D:\php\xampp\php\ext\php_xdebug.dll"  或者 是/usr/lib/php/modules/xdebug.so

xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

;xdebug.profiler_enable = 0  ; 一般不要打开性能监控,会生成很大的缓存文件,几个g到几十g都有
xdebug.remote_port=9000 ; 遠程端口在netbeans裏面默認是9000,也可能不正確,端口不對也調試不了,netbeans工具->选项->常规   选择好web浏览器 工具->选项->php->调试

xdebug.collect_params
类型: integer(整型), 默认值: 0
此参数,默认为0,当在函数轨迹或堆栈轨迹中记录一个函数调用时,控制Xdebug是否应该搜集传递给函数的参数
默认值为0,因为对于大脚本来说,它可能消耗大量的内存而使脚本无法运行。启用该选项是安全的,但是如果脚本中含有大量函数调用或者有大数据结构作 为参数的话,可能会遇到一些问题。 Xdebug 2改进了内存使用,此问题不再存在,因为它不再将这些信息存储在内存中。相反,Xdebug会将这些信息写入硬盘,这意味着你得留意硬盘使用量。
此参数用4个不同的可选值,每个不同的值都会对应显示不同的信息。以下你将看到每个参数值所提供显示的信息,查看章节堆栈轨迹以获取详细介绍。.


xdebug的 remote_host? 配置指的哪个 远程主机?

这里的remote指的是, 远程的开发机.

因为, xdebug是php的模块, 而php和xdebug都是在服务器上的.

所以, xdebug中的设置, 都是指在本机/服务器机器 上的配置. 那么 xdebug中所指的 remote_host机器 / 相对而言的就 不是安装xdebug的本机, 不是服务器了. 而是要 连接到 xdebug (这个服务器)的 远程机器(远程开发机)的机器.

比如: 有一台 centos(或 redhat)的 服务器, 然后在win上, 通过ssh连接到centos, 或者是在 win上 通过ide: eclipse 来连接到centos , 并进行调试的时候,

这时:

首先就应该在 服务器上安装 xdebug(注意, xdebug总是安装在 服务器上的, 作为php的一个模块存在), 就是说,不能将xdebug安装在这里的win机器上.

然后, 就是在 服务器上的php.ini中配置xdebug节

在服务器的xdebug节中, 配置 xdebug.remote_host = "win机器的/运行eclipse的win机器的 ip地址" , 那么其他的配置项就好理解了, 比如: xdebug.remote_port=9000就是指win开发机的xdebug端口号, 那么自然的, xdebug.remote_handler=dbgp就是 指win远程机器 使用什么协议连接到 xdebug.

(上面的remote_port, remote_handler是由你的 开发ide自身指定的.比如是由eclipse 指定的, 比如默认的是9000, dbgp, 那么, 不同的开发机上的不同的ide, 所指定的端口和协议就不同, 不一定是这个了, 你可以在 eclipse中自己指定的.)

由于xdebug采用的是 c/s模式, 总是要由客户端发起的, (要由客户端的浏览器通过http请求发起), 所以说, 总是要/必须要设置 remote远程机器(开发机/调试机器)的配置信息的. 即使是在服务器上/本地机器上进行 调试(服务器本身就是开发机) 这时候, 也必须要设置远程的四个信息: xdebug.remote_enable, remote_host, remote_port, xdebug.remote_handler??????

运行.configure --help最重要的两条配置选项是:

--with-php-config=PATH Path to php-config

--enable-xdebug Enable Xdebug support

注意, 这里的php-config是什么?

是一个配置php的脚本文件, 可执行的

位置是在 /usr/bin/php-config

configure: error: Cannot find php-config. Please use --with-php-config=PATH

在 ./configure --help中的说明是: --with-php-config=PATH Path to php-config php-config

一定要指定到php-config的完整路径和文件名, 即: --with-php-config=/usr/bin/php-config. 查看: which php-config

注意, php-config不是指php的配置文件, 不是指/etc/php.ini

而且, 最开始是没有phpize和php-config 这两个脚本命令的, 要安装好 php-devel包后, 才有phpize和 php-config脚本命令

其中文档目录有多种形式:包括: --htmldir --docdir, --mandir, --pdfdir等等

xdebug源码目录中, 相关功能模块的文件

xdebug-tracing.h, xdebug-tracing.c是关于跟踪的功能文件

xdebug-monitor.h, xdebug-monitor.c

xdebug-set.h, xdebug-set.c

xdebug-var.h, xdebug-var.c 是关于xdebug 变量输出的功能文件

bash中, case语句的格式是: 其中语句体 是放在 关键字界定符 in 和 esac之间的.

case "$i" in    // 变量可能要加引号, 也可能不加引号

val1)
statement...
statement...
;;

val2)
statement...
statement...
;;

*)   // default就是这里的*
statement...
statement...
;;

esac


1 自定义编译安装的时候, 使用的是 libtool工具, 最后将生成的.so模块文件从当前目录的隐藏文件夹中拷贝到目标目录中.

libtool: install: cp ./.libs/xdebug.so /opt/xdebug-2.5.0/modules/xdebug.so

libtool: install: cp ./.libs/xdebug.lai /opt/xdebug-2.5.0/modules/xdebug.la

libtool: finish: PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin:/sbin" ldconfig -n /opt/xdebug-2.5.0/modules

--------------------------------------------

2 Libraries have been installed in:

/opt/xdebug-2.5.0/modules

3 Build complete.

Don't forget to run 'make test'. // 编译安装完成后, 要运行make test命令.

Installing shared extensions: /usr/lib/php/modules/

会自动的帮你把这个xdebug.so拷贝到 php的共享扩展目录中 你ll /usr/lib/php/modules的时候, 就会看到 这个和 /opt下的同样的 xdebug.so了

NOTE: Please disregard the message (disregard: 漠视, 忽视, 不要管) |

| You should add "extension=xdebug.so" to php.ini |

| that is emitted by the PECL installer. This does not work for |

| Xdebug. |

|

一个常识: 在任何时候, 除非语法要求之外, 不管是写注释还是生效的代码, 都要有单词的意识. 因此, 单词和单词之间都应该有一个空格

php.ini的配置文件中,

使用分号; 进行注释. 分号在这里是一个单词, 因此, 分号和后面的内容之间应该有一个空格

在item=value格式中, item的写法是 小写单词加下划线, 后面的值可能是任何类型的, 比如数字, 字符串, 或者是表示开关的 "逻辑值" On /Off(这里的On和Off 推荐使用 首字母大写的驼峰表示法)

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

spawn: [sp2:n], n.子, 卵,菌丝; 产物; 结果 | v. 产卵; 酿成; 造成

php-fpm:php fastcgi processing manager: 它和spawn-fcgi: 都是用来进行php的内存和进程管理的.

php-fpm在php5.3.3之前是作为patch补丁来使用的.

php5.3.3之后, 是已经集成到源码包中的了, 使用 只要在 安装源码的时候, 配置 ./configure -enable-fpm .

php-fpm 跟 php Optimizer类似, 是用来管理 和优化 cgi进程的.

cgi fastcgi . 调用管理关系: php-fpm -> php-cgi -> fastcgi

如何查看php是否开启了php-fpm?

要理解httpd服务器 和 其他脚本程序之间 通信的 原理和方法??

好像是: httpd -> cgi(php-cgi) -> fastcgi?

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

在fedora23中, vim中使用xdebug的版本是: xdebug-2.5.0.tgz

在安装xdebug的时候, 不管你自编译安装什么的, 最终的目的都是 为了获得一个 xdebug.so的动态库, 这个动态库要作为php的一个插件使用,即生成获得了xdebug.so后 要拷贝到 /usr/lib/php/modules 目录中, 才能使用这个调试功能

[root@localhost usr]# ls /usr/lib/php/modules
bcmath.so    ftp.so       mysql.so       smbclient.so  wddx.so
bz2.so       gd.so        pdo_mysql.so   sockets.so    xdebug.so

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: