apmserv下xdebug的配置 – myD – 博客园
Apache 用vc9编译的, PHP用vc9编译的,xdebug也找vc9编译,正常配置,就不信特么的还出错(2014年1月23日 11:15:13)
windows下,如果在配置文件中写指令 extension=php_xdebug.dll 在启动Apache时或在命令行执行PHP时会有warning说xdebug要以zend扩展的模式被加载,可以不用管它,因为要是按照提示,用指令zend_extension=php_xdebug.dll/zend_extension_ts=php_xdebug.dll时虽然没有警告但是xdebug会不起作用(2014年3月18日 17:38:15)
———————————-
先看看线程安全(ts/nts)与php编译的解释(vc6/vc9)
http://www.cnblogs.com/tonysuen/archive/2009/12/21/1629252.html
http://www.php100.com/html/webkaifa/PHP/PHP/2010/0103/3746.html
2013年3月15日 09:47:31(extension和zend_extension的区别)
http://blog.163.com/lgh_2002/blog/static/440175262010910103342213/ (重要,只要找对了版本,就不要在那堆列表(PHP扩展列表)中写extension=php_xdebug.dll,因为xdebuge属于zend的扩展,而不是PHP的扩展,所以要在[Xdebuge]栏目下写zend_extension[_ts]=”xdebuge的绝对路径”)
大家在安装xdebug前用phpinfo();输出一下,将内容复制到 http://xdebug.org/wizard.php 中(xdebug官方网站)
我的开发环境是apmserv5.2.6,得到的结果如下:
Summary
Xdebug installed: no
Server API: Apache 2.0 Handler
Windows: yes – Compiler: MS VC6 – Architecture: x86
Zend Server: no
PHP Version: 5.2.6
Zend API nr: 220060519
PHP API nr: 20060613
Debug Build: no
Thread Safe Build: yes
Configuration File Path: C:\windows
Configuration File: F:\APMServ\PHP\php.ini
Extensions directory: F:\APMServ\PHP\ext
The compiler (MS VC6) that this PHP was build with, is no longer supported. Please upgrade to a version that was built with MS VC9.
注意几点:
1,你的PHP在被编译时用的是哪个版本的c语言编译工具 是vc6 还是 vc9,如果是vc6(通过上边分析结果知道,apmserv 5.2.6 是用vc6编译的),那么下载xdebug.dll时选择名字中有vc6的版本;
2,弄清你的php在编译后是带线程安全(ts)功能的,还是不带线程安全(nts)功能的,例如:apmserv5.2.6里的PHP是线程安全的,那么在PHP配置文件中要写上zend_extension_ts=php_xdebug.dll(在apmserv 5.2.6的PHP配置文件中我试了xdebug 2.0.4版本,只有写成zend_extension_ts=php_xdebug.dll,phpinfo()才能识别xdebug)
总之:
1.必须保证PHP和xdebug带不带有线程安全功能要统一,且都是同一个版本的编译器编译的(vc6或者vc9)
2.zend_extension_ts=php_xdebug.dll (zend_extension_ts=php_xdebug.dll写在[xdebuge]模块里)
3.注释或不写extension=php_xdebug.dll(和Dynamic Extensions中列出的一堆*.dll写在一起),否则apache启动的错误日志里会提示警告,xdebug必须以zend的扩展(而不是php的扩展)进行加载,(写了也不影响加载,依旧会在phpinfo()里出现)
4.”上下”都写明了xdebuge扩展的路径,Apache会提示重复加载,但不影响加载,主要还是PHP的版本和xdebuge版本得匹配
p.s.
只运行简单的phpinfo();函数测试:
xdebug的2.0.3-2.0.5的ts版本可以被apmserv 5.2.6使用,但包括2.1.0版本在内的新版本,即使是用vc6编译的带ts功能的xdebug,apmserv5.2.6中都不能使用,会出现页面重置的情况,不知道为什么(应该能使用,但我不知道还需要修改什么配置)。
php_xdebug-2.0.3-5.2.5.dll(名字中没有nts表明该版本的xdebug在编译的时候配置带有线程安全功能)
php_xdebug-2.0.4-5.2.8-nts.dll(nts意思是该版本的xdebug没有线程安全功能,Non-thread-safe)
php_xdebug-2.1.2-5.2-vc6.dll(该版本的xdebug是用vc6编译的,也是最后一个用vc6编译的版本,此后的版本都是用vc9编译的因此不能在apmserv5.2.6上使用)
转载请注明:苏demo的别样人生 » apmserv下xdebug的配置