重新整了一个开发环境,结果发现在调试时候断点不停,设置的断点无效,也不能在第一行停下,于是折腾出本文。
环境:windows + php + eclipsePHP + xdebug
1) 查看php.ini以及phpinfo均显示xdebug以配置成功。
原先配置:
extension=php_xdebug.dll
zend_extension=D:\php\ext\php_xdebug.dll
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
2) php -m
D:\php>php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
ereg
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
odbc
pcre
PDO
pdo_mysql
Phar
Reflection
session
SimpleXML
sockets
SPL
standard
tidy
tokenizer
wddx
xdebug
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
3) 查找官网发现有段针对模块设置的描述,认为 xdebug应该有两处,即在PHP Modules和Zend Moudles下都应该有xdebug.
通过 https://xdebug.org/wizard.php 进行诊断配置是否正确,显示如下:
Tailored Installation Instructions
Summary
Xdebug installed: Only as PHP extension!
Server API: Command Line Interface
Windows: yes - Compiler: MS VC9 - Architecture: x86
Zend Server: no
PHP Version: 5.3.25
Zend API nr: 220090626
PHP API nr: 20090626
Debug Build: no
Thread Safe Build: yes
4)所以应该是配置问题。于是发现官网上提到了不应该用extension=xdebug来加载扩展。于是试了下,问题解决。原来即使在加了zend_extension=path/xdebug.dll的情况下,添加extension=xdebug.dll反而是画蛇添足,适得其反。
5)最后的配置:
;extension=php_xdebug.dll
zend_extension=D:\WebEnv\php\ext\php_xdebug.dll
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000