在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/目录下.
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是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中自己指定的.)
--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
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之间的.
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. |
|
使用分号; 进行注释. 分号在这里是一个单词, 因此, 分号和后面的内容之间应该有一个空格
在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
==================================
在fedora23中, vim中使用xdebug的版本是: xdebug-2.5.0.tgz
在安装xdebug的时候, 不管你自编译安装什么的, 最终的目的都是 为了获得一个 xdebug.so的动态库, 这个动态库要作为php的一个插件使用,即生成获得了xdebug.so后 要拷贝到 /usr/lib/php/modules 目录中, 才能使用这个调试功能
参考: 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]# phpizeCan'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
相关文章推荐
- php 安装xdebug进行调试(phpstorm)
- PHP开发调试插件xdebug安装与配置
- Windows和Linux中php代码调试工具Xdebug的安装与配置详解
- phpstorm+xdebug helper对PHP代码进行断点调试
- myeclipse安装插件phpeclipse后进行PHP代码编写
- php安装xdebug 用komodo进行调试
- Windows和Linux中php代码调试工具Xdebug的安装与配置详解
- 使用phpStorm编辑器进行PHP代码的xdebug调试
- myeclipse安装插件phpeclipse后进行PHP代码编写
- php调试工具Xdebug安装与分析工具Wincachegrind
- php Xdebug 调试扩展的安装与使用.
- 为PHP安装Xdebug调试工具
- PHP调试工具Xdebug安装配置教程
- 使用Zend Studio和Zend Debugger进行php代码的远程调试
- VIM+Xdebug调试php
- PHP5.3不支持zend debugger, 安装Xdebug调试工具
- 如何使用火狐Firefox的Zend Firefox Toolbar插件和Zend Studio进行代码调试
- 为PHP安装Xdebug调试工具
- Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指南