windows下的php 5.3安装xdebug,竟然强制要求zend_extension写绝对地址

如题。

xdebug一直无法加载,换版本也不行;最后google得知这里要使用绝对路径。

有点不可理解,zend_extension加载扩展,竟然要求写绝对路径,跟extension指令使用相对路径还不一样。

备个忘吧。

btw,xdebug官方的安装向导,做得很赞,只是向导里没有强调必须使用绝对地址。

xdebug官方安装说明里倒是有:

---------xdebug官方安装说明 -------------------------------------------------------------------

but you still need to add the correct line to your php.ini: (don't forget to change the path and filename to the correct one — but make sure you use the full path)

zend_extension="/usr/local/php/modules/xdebug.so"

Note: You should ignore any prompts to add "extension=xdebug.so" to php.ini — this will cause problems.

 

------END of---xdebug官方安装说明 -------------------------------------------------------------------

php安装xdebug后,让var_dump()函数输出完整的变量内容

php开发环境里,安装了xdebug模块后,var_dump()输出的结果将比较易于查看,但默认情况下,var_dump() 输出的结果将有所变化:过多的数组元素不再显示,字符串变量将只显示前N个字符,较深的数组元素也被显示成省略号。这点会带来一些不便,我们修改配置文件,设置这些。

在php.ini里的xdebug节点中,加入如下

xdebug.var_display_max_children=128
xdebug.var_display_max_data=512
xdebug.var_display_max_depth=5

含义从名字上看就可看懂。

其实这里有三条配置,正好与本文上述的三点“变化”一一对应嘀 ^..^

从phpinfo()里的xdebug节点里可以看到更多的配置变量,多半也是可以通过php.ini修改的

fedora linux下php调试利器xdebug 2.1.0下载/fedora13,14测试通过

核心内容:

笔者曾写过一篇fedora linux apache/php下安装配置xdebug,记录了fedora13下安装xdebug 2.1.0的过程。当时在编译的二进制.so模块可以直接在fedora14下使用,如不想自己编译、且信得过笔者的同学们,请直接下载本文件,或者参考上文自行编译:

下载安装文件xdebug-module-linux-fedora13-14

安装方法:

1. 复制文件xdebug.so/usr/lib/php/modules/

2. 复制文件xdebug.ini/etc/php.d/

3. 重启apache

___________以下是个人安装过程,仅供参考________________

笔者曾写过一篇

fedora linux apache/php下安装配置xdebug

当时是在fedora13下参考xdebug官方的说明文档自行编译,然后把编译过程记下来的。现在fedora14已经发布几个月,当然是覆盖安装了。今天需要写个小东西,php自带的调试消息实在比较简陋,于是想起安装个xdebug,首先想到的yum里找不到,于上网上搜索怎么yum安装,结果发现打开的是这篇自己几个月前写的文章。

难道又要重新编译吗?太没效率了!

于是想是否不用重新编译、而是直接使用以前编译的.so模块呢?试试,不行再编译。

参看文章中之前的记录,还要安装两个工具:phpize与php-config,从它们文件名看,应该是编译过程上用的,现在不用编译,不安装试试。

安装过程:把编译目录里./moduls/xdebug.so复制到/usr/lib/php/modules/, 再写入xdebug配置信息上到文件/etc/php.d/xdebug.ini

[root@fsc prx]# echo 'zend_extension=/usr/lib/php/modules/xdebug.so
> [Xdebug]
> xdebug.profiler_enable=on
> /etc/php.d/xdebug.ini' >/etc/php.d/xdebug.ini

重启apache,结果没有html格式的php消息。运行<?php phpinof();?> 发现xdebug是成功加载了,经验判断是没有打开php的html格式错误显示所致。看之前写文章里,有这一点 的,只是写在后面,看来这篇文章的“读者体验”(从“用户体验”生造来的词~~)不怎么好,连自己看都感觉到不方便! 有必要修改一下。

运行下面代码,把html_errors打开。

[root@fsc prx]# echo 'html_errors=on'>>/etc/php.d/xdebug.ini

再次重启apache,完成。

抓个图来纪念一下:

fedora linux apache/php下安装配置xdebug

核心内容:

在fedora13下从源码编译安装xdebug; 如果仅仅需要在linux/fedora13,14下安装xdebug,请参看本文,直接下载二进制文件并安装使用 fedora linux下php调试利器xdebug 2.1.0下载/fedora13,14测试通过

环境:fedora13 apache2.2 php5.3.1

首先从xdebug官方网站下载得xdebug最新稳定版的源码,解压缩,查看其中的README文档。

文档里说得很清楚,需要有phpize与php-config,apache与php都是通过fedora yum安装的,通过whereis 命令查找,及在php目录里都没有找到这样的两个文件,于是yum provides */phpize

[root@fsc xdebug-2.1.0]# yum provides */phpize
已加载插件:presto, refresh-packagekit
php-devel-5.3.1-3.fc13.i686 : Files needed for building PHP extensions
Repo        : fedora
匹配来自于:
Filename    : /usr/bin/phpize

php-devel-5.3.3-1.fc13.i686 : Files needed for building PHP extensions
Repo        : updates
匹配来自于:
Filename    : /usr/bin/phpize

phpize就在包php-devel-5.3.1-3.fc13.i686里(同样方式查询yum provides */php-config,也在php-devel包里),yum安装php-devel就可以了,如下

yum install php-devel

参考xdebug的README,进入解压缩后的xdebug目录里,执行phpize,看到几行信息输出;

下一步,

./configure --enable-xdebug

运行正常,next ,就是最常见的make

make

花费时间长一点,好几分钟,让它自己编译,干点别的。完成后看make输出的最后一行说什么donot forget run 'make test'(本文是根据回忆写的,可能有不准确之处),运行一下,好像有警告信息,不管它,官方文档里没有这一步,可能只是为了检查运行完全正确,忽略它。

下一步复制xdebug.so到php扩展目录。先要查看php的扩展模块在哪个目录里,我使用一个简单的php程序<?php phpinfo();?>查看配置信息,

得知是/usr/lib/php/modules目录,

[root@fsc xdebug-2.1.0]# cp modules/xdebug.so /usr/lib/php/modules/

建一个文件/etc/php.d/xdebug.ini内容如下

zend_extension=/usr/lib/php/modules/xdebug.so
[Xdebug]
xdebug.profiler_enable=on
/etc/php.d/xdebug.ini

(这部分也完全可以放到php.ini文件里,放到php.d目录里,是为了配置文件相互独立,管理方便)

安装完毕,优雅重启apache

[root@fsc xdebug-2.1.0]# /etc/init.d/httpd graceful

再运行phpinfo,其中有如下部分

xdebug加载运行正常。

php错误消息显示默认是以text文本形式显示的,xdebug显示调试信息时,信息量一般都比较大,最好打开php的html_errors,这样可以显示更友好的调试信息。可以在/etc/php.d/xdebug.ini里面加入下面一行

html_errors=on

当然也可以加入到php.ini文件里。

[附] xdebug 2.1.0 源码里的README文档摘选

--------------------README 文档节选-----------------------------------------------------------------

XDEBUG

------

You need to compile Xdebug separately from the rest of PHP.  Note, however,
that you need access to the scripts "phpize" and "php-config".  If your
system does not have "phpize" and "php-config", you will need to compile
and install PHP from a source tarball first, as these script are
by-products of the PHP compilation and installation processes. It is
important that the source version matches the installed version as there
are slight, but important, differences between PHP versions.

Once you have access to "phpize" and "php-config", do the following:

1. Unpack the tarball: tar -xzf xdebug-2.1.x.tgz.  Note that you do
not need to unpack the tarball inside the PHP source code tree.
Xdebug is compiled separately, all by itself, as stated above.

2. cd xdebug-2.1.x

3. Run phpize: phpize
(or /path/to/phpize if phpize is not in your path).

4. ./configure --enable-xdebug (or: ../configure --enable-xdebug
--with-php-config=/path/to/php-config if php-config is not in your
path)

5. Run: make

6. cp modules/xdebug.so /to/wherever/you/want/it

7. add the following line to php.ini:
zend_extension="/wherever/you/put/it/xdebug.so"

8. Restart your webserver.

9. Write a PHP page that calls "phpinfo();" Load it in a browser and
look for the info on the xdebug module.  If you see it, you have been
successful!

--------------------END of README 文档节选-----------------------------------------------------------------

php调试利器 xdebug

php调试利器 xdebug

xdebug官方网站http://xdebug.org/

在Linux下编译安装XDebug

引用
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/

注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。

Windows安装:
1. 登录www.xdebug.org,在下载您需要的版本,建议下载Windows binaries,免去手工编译,根据你的php版本选择其中的PHP5.2或5.3的,下载php_xdebug-xxxx.dll文件;建议下载稳定版,而不是beta版,当然beta版一般也不会出问题.
2. 将下载的php_xdebug-xxx.dll放到C:\php5\ext目录,重命名为php_xdebug.dll;路径根据您的php安装路经不同可能有所有同.
3. 编辑php.ini,加入下面几行:
extension=php_xdebug.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="J:\php_xdebug_output"
xdebug.profiler_output_dir="J:\php_xdebug_output"
后面的目录“J:\php_xdebug_output”为你想要放置Xdebug输出的数据文件的目录,可自由设置。
4. 重启Apache (或iis);
可以专门写几行有错的代码,看看出错信息显示不何不同。
再用var_dump()输出一个数组,看看显示是不是友好多了,至少不用查看html源文件才能看到清晰的数组结构.