我花了几个小时来设置我的IDE以使用eclipse和xdebug来调试PHP。除了我在eclipse上设置的断点之外,一切都很好。如果我双击某一行来添加断点,调试器希望不停止..如果添加行xdebug_break(),调试器就会在该行停止...
这可能是配置问题。有谁可以帮助我?
PHP.ini中
[xdebug]
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/temp"
xdebug.collect_params = 4
xdebug.collect_return = on
xdebug.collect_vars = on
xdebug.show_local_vars = 1
答案 0 :(得分:18)
如果xdebug没有在代码的任何部分停止,请将xdebug_break()
添加到代码的这一部分。
答案 1 :(得分:12)
似乎有几个问题可能是这个问题的根源。在我的情况下,我认为我需要设置一些路径映射。
在下面找到的设置
rightclick-project->properties->PHP Debug
然后
server->edit->path mapping
错了。
我手动添加了一些我认为是正确的东西,但Eclipse似乎可以通过自己完成这一切。删除映射使其工作。
答案 2 :(得分:10)
我在Eclipse PDT和Xdebug方面遇到了类似的问题。原因是Eclipse正在通过IPv6进行监听,但Xdebug尝试通过IPv4进行连接:
chriki@machine:~$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
Xdebug doesn’t seem to support IPv6,但是。
添加行
后-Djava.net.preferIPv4Stack=true
在-vmargs
文件中的eclipse.ini
行之后,Eclipse开始通过IPv4收听:
chriki@machine:~$ netstat -an | grep 9000
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN
调试现在可以完美运行。
答案 3 :(得分:7)
我已经解决了这个问题。
在我的php.ini上,我将xdebug添加为扩展而不是zend_extension。
的php.ini
zend_extension=C:\EasyPHP-5.3.3\php\ext\php_xdebug.dll
注意:路径必须是完整路径而不是相对路径。
调试器工作得很好。美味!
答案 4 :(得分:3)
我遇到了同样的问题,PDT会启动调试会话,甚至打破脚本的第一行并允许从那里踩到,但如果我点击Resume,它会愉快地运行我设置的任何手动断点。在摆弄它并阅读其他一些回复之后,我修复了它。
我一直在尝试设置路径图(在PHP服务器配置中),因为我的项目路径和Web服务器路径不同,但由于某种原因这不起作用所以我最终添加了apache配置的别名匹配PDT要求的位置。但是,我没有删除此路径映射设置。当我删除路径图时,断点开始工作!
可能是其他不能正常工作的症状(路径图设置),但断点和调试现在对我有用了:)
答案 5 :(得分:2)
移动我的一些本地项目文件夹后,这个问题突然出现了。我可以让xdebugger在文件的开头打破,但它会跳过其余的断点。
如果您使用的是Netbeans,请检查您的Project Url(项目属性 - >运行配置)是否指向正确的位置。项目URL指向正确的文件夹,断点开始按预期工作。
答案 6 :(得分:2)
我遇到了同样的问题。解决方案是打开正确的文件并在其中添加断点。
我的本地服务器在我的虚拟Z:驱动器上(我使用的是denwer而不是WAMP)。 Z驱动器指向我的D:/ webserver文件夹。所以我可以打开我的文件1) Z:/myproject/script.php 和2) D:/webserver/myproject/script.php
由于某些原因,调试器仅在打开的 Z:/myproject/script.php 文件中停止断点。
如何测试我的解决方案???下一步:
xdebug_break()
添加到任意行并保存文件在我的情况下,调试过程启动后,我的phpDesigner IDE在IDE中打开正确的文件,并在xdebug_break()行停止。因此,在这个新打开的文件中,您可以添加断点,它们将起作用。使用打开的文件进行调试。
答案 7 :(得分:1)
我几天都遇到了同样的问题(!),因为我意识到问题是最微不足道的。
配置:
/etc/php5/apache2/php.ini
[XDebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_output_dir=/tmp
调试器没有停在断点处,也没有停在xdebug_break();
...这是由于默认的Apache DocumentRoot文件夹的/var/www
权限
我将其更改为/home/user/Documents/www
。
答案 8 :(得分:1)
快速回答:删除php脚本路径上的所有空格。
上下文:
PDT插件版本3.7.0中存在一个错误,它会阻止调试器在断点处停止
当脚本的路径包含空格时会发生这种情况!
它已经修复,但我想目标版本是4.0.0,尚未发布
保存我一天的评论是https://bugs.eclipse.org/bugs/show_bug.cgi?id=489646#c7("评论7")。
答案 9 :(得分:1)
这已经让我失望了大约3个小时,只是努力了。所以,在你把枪放在头上之前,试试吧。 Eclipse启动时,选择一个新工作区,然后重新设置项目!
在我这样做之后,我的断点再次被击中! 我的破发点工作正常,然后他们突然停止工作。 我试过:
删除所有断点
清洁项目
重新安装eclipse
上述任何一项都不适合我!
BTW我正在使用窗口7。
我希望这些信息可以拯救某人的生命!
BTW:以下是您使用xdebug和vmwere进行设置的步骤,使用带有eclipse的窗口7客户端:
下载vmwere
downlaod and setup vmwere with:CentOS-7-x86_64-Everything-1511.iso
禁用防火墙
systemctl禁用firewalld
systemctl stop firewalld
systemctl status firewalld
通过ftp连接
ifconfig找出Ip
的ifconfig
eno16777736:flags = 4163 mtu 1500
inet 192.168.170.128 netmask 255.255.255.0 broadcast 192.168.170.255
inet6 fe80 :: 20c:29ff:fec4:b8ca prefixlen 64 scopeid 0x20
ether 00:0c:29:c4:b8:ca txqueuelen 1000(以太网)
RX包254字节20919(20.4 KiB)
RX错误0丢弃0超出0帧0
TX包95字节10225(9.9 KiB)
TX错误0丢失0超支0载波0冲突0
192.168.170.128是ip
rpm --import / etc / pki / rpm-gpg / RPM-GPG-KEY *
yum -y install epel-release
yum -y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation
yum -y install httpd
systemctl启动httpd.service
systemctl启用httpd.service
yum -y install php
service httpd restart
yum -y install php-mysql
yum -y安装php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring
php-snmp php-soap curl curl-devel
service httpd restart
yum install phpMyAdmin
在Windows上打开cmd,键入ipconfig
查找
以太网适配器VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . : localdomain
Link-local IPv6 Address . . . . . : fe80::94b8:9e5c:c772:3d47%19
IPv4 Address. . . . . . . . . . . : 192.168.170.1 [ this is the widnows ip to allow ]
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway .
/etc/httpd/conf.d/phpMyAdmin.conf中的更改:
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
为:
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip [ WINDOWS IP TO ALLOW GOES HERE ]
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from [ WINDOWS IP TO ALLOW GOES HERE ]
Allow from ::1
</IfModule>
service httpd restart
更改$ cfg [&#39;服务器&#39;] [$ i] [&#39; auth_type&#39;] =&#39; cookie&#39 ;;到$ cfg [&#39;服务器&#39;] [$ i] [&#39; auth_type&#39;] =&#39; http&#39;;
service httpd restart
/ etc / selinux / config change
此文件控制系统上SELinux的状态。
SELINUX =可以采用以下三个值中的一个:
强制执行 - 强制执行SELinux安全策略。
permissive - SELinux打印警告而不是强制执行。
已禁用 - 未加载SELinux策略。
SELINUX =执行
SELINUXTYPE =可以取三个值中的一个:
有针对性 - 目标流程受到保护,
最低 - 修改目标政策。只有选定的流程 保护。
mls - 多级安全保护。
SELINUXTYPE =有针对性的
到
此文件控制系统上SELinux的状态。
SELINUX =可以采用以下三个值中的一个:
强制执行 - 强制执行SELinux安全策略。
permissive - SELinux打印警告而不是强制执行。
已禁用 - 未加载SELinux策略。
SELINUX =已停用
SELINUXTYPE =可以取三个值中的一个:
有针对性 - 目标流程受到保护,
最低 - 修改目标政策。只有选定的流程 保护。
mls - 多级安全保护。
SELINUXTYPE =有针对性的
reboot centos
在WINDOWS POINT浏览器中:http://192.168.170.128/phpmyadmin,应该都是好的
将网站复制到:/ var / www / html / [网站名称]
chmod -R 777 html
在etc / httpd / add中(这允许永久链接使用帖子名称)
选项FollowSymLinks
AllowOverride All
订单允许,拒绝
全部允许
yum install php-devel(允许pipsize)
制作php文件:并复制到网站root运行它并将htl复制到https://xdebug.org/wizard.php然后单击分析源按钮
https://xdebug.org/wizard.php会发出如下指示:(关注他们)
...... 下载xdebug-2.4.1.tgz
使用tar -xvzf xdebug-2.4.1.tgz解压缩下载的文件
运行:cd xdebug-2.4.1
运行:phpize(如果您没有phpize,请参阅常见问题解答。
运行:./ configure
运行:make
运行:cp modules / xdebug.so / usr / lib64 / php / modules
编辑/etc/php.ini并添加行
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.remote_enable =开
xdebug.remote_host = 192.168.170.1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
..... service httpd restart
运行文件,你应该看到一个XDebug部分,如果是的话 服务器准备好了!
下载Eclipse Neon
档案&gt;从文件系统中打开项目
完成(并等待)
窗口首选项&gt; php&gt;服务器&gt;新
服务器标签
服务器名称[你喜欢什么]
基本网址[IP或服务器名称]
文档根目录[所有代码所在的硬盘驱动器上的位置必须与服务器上的位置相同]
调试器选项卡
调试器:Xdebug
port:9000
服务器映射选项卡(单击添加)
服务器上的路径:[您网站的整个路径] EG:/ var / www / html / website
工作区中的路径[找到您添加的项目:从文件系统中打开项目]
转到eclipse主窗口&gt;点击bug图标旁边的下拉箭头&gt;调试配置
服务器标签
文件:[这应该是您本地项目中的第一个文件 在应用程序打开时运行]
网址:关闭自动生成:取消选中
网址第一个文本框:[运行网站的服务器的IP或名称]
网址第二个文本框:[如果您的网站不在根目录中,那就是它所在的目录]
常用标签
在收藏夹菜单中显示
窗口&gt;预期&gt;开放的预期&gt; PHP
在首先被点击的php文件中放置一个断点(通过单击代码行上的垂直滚动条)
最后点击eclipse中的调试图标,你的断点应该被击中(带断点的代码行将变为绿色)
在Vemware上向世界开放Centos 7
将VMeere网络设置更改为桥接
向路由器添加规则,以便向运行cetnos的vmweare IP的任何流量添加端口
将入站规则添加到允许http
的widnows防火墙 PS:我没有时间检查我的gammer和speiing,处理它答案 10 :(得分:0)
从Xdebug 2迁移到3时,这里出现类似问题。
有一个documentation,但最重要的是:
Xdebug的默认调试端口已从 9000 更改为 9003 。
要确保仅“步骤调试”处于活动状态,而不是:
xdebug.remote_enable=1
xdebug.default_enable=0
xdebug.profiler_enable=0
xdebug.auto_trace=0
xdebug.coverage_enable=0
您现在只能这样做:
xdebug.mode=debug
xdebug.remote_autostart
设置已被删除。而是设置
xdebug.start_with_request=yes
答案 11 :(得分:0)
对我来说,问题似乎是Xdebug v2.7.0beta2-dev的php 7.2,请注意 beta 部分。这是使用puphpet.com安装的。我尝试了php 7.1,问题消失了。花了我几个小时找到这个!
答案 12 :(得分:0)
我使用eclipse-php-oxygen遇到了同样的问题 问题在于日食。 我已经安装了eclipse-php-luna-SR2-win32并测试了xdebug,它运行正常。
安装: XAMPP-win32-7.0.30-0-VCl 4-Installer.exe的 Java 8 Update 171
[XDebug]
zend_extension = C:\xampp\php\ext\php_xdebug-2.6.0-7.0-vc14.dll
;zend_extension = C:\xampp\php\ext\php_xdebug-2.5.5-7.0-vc14.dll
;zend_extension = "c:\xampp\php\ext\php_xdebug-2.6.0-7.2-vc15.dll"
xdebug.remote_autostart = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log = "c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "c:\xampp\tmp"
;36000 = 10h
xdebug.remote_cookie_expire_time = 36000
我希望这会有所帮助。
BR, 阿里
答案 13 :(得分:0)
我在窗户上,遮住氧气。花了相当长的时间后,我发现Debug Configuration
的简单删除和重新创建有帮助。
答案 14 :(得分:0)
我也解决了这个问题。 使用zend_extension而不是扩展名。
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
答案 15 :(得分:0)
我在fedora发行版20 Heisenbug,php-ZendFramework2-Debug-2.3.9-1.fc20.noarch,php-pecl-xdebug-2.2.7-1.fc20.i686和eclipse版本中添加了同样的问题: Mars.1发布(4.5.1)。我使用了之前的答案,发现eclipse使用ipv6,我在eclipse.ini中为-Djava.net.preferIPv4Stack=true
进行了更改。对于xdebug.ini也一样,但仍然无效,直到我发现我有2个xdebug.ini文件,/etc/php-zts.d/
中有一个是错误的文件,而/etc/php.d/
中有一个是; Enable xdebug extension module
zend_extension=xdebug.so
xdebug.remote_enable=on
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_autostart=1
xdebug.idekey=
使用的文件。阿帕奇。我修改它以包括以下设置
sudo service network restart
重新启动网络numpy.i
,现在检测到断点,我可以按预期进行调试。
答案 16 :(得分:0)
对我来说简单的解决方案,当我新安装和配置的xdebug不能与PhpStorm一起使用时:我只是忘记在更新php.ini文件后重启apache。
答案 17 :(得分:0)
1-检查php.ini上的xdebug配置
2- eclipse-&gt; project-&gt; properties-&gt; phpDebug-&gt;
启用项目特定设置
phpDebugger-&GT; configurattion-&GT;端口 要么 widndow-&GT;优先 - &GT; PHP-&GT;调试 - &GT; installedDebuggers
3-widndow-&GT;优先 - &GT; PHP-&GT;
Interpreter-&GT;版本
executables-&GT; php-win.exe的路径
指出:对于每个调试库(xdebug,zend_debugger,...),您可以使用默认的php可执行文件。
4 - 您的应用程序服务器在80的不同端口上工作。 widndow-&GT;优先 - &GT; PHP-&GT; PHP服务器
答案 18 :(得分:0)
我遇到了同样的问题,其中一项修复了......
我在PHP.ini中删除了一个重复的zend_extension定义
或者更有可能我刚从这里升级到最新的xdebug版本: http://xdebug.org/download.php
(我正在运行XAMPP v1.7.1附带的xdebug)
这个开始了...尝试了所有不同版本的xdebug dll等...结果发现导致这个不起作用的是打开Expressions窗口......所以当你调试东西时保持关闭..你可以暂时添加一个手表,然后在“步骤”之前关闭表达式窗口......
虚假......
答案 19 :(得分:0)
如果您使用的是Eclipse,可能是为特定启动配置的 调试器 (请参阅调试器选项卡)是Zend Debugger,而不是XDebug。修复调试启动并重试。这解决了我的问题。
不幸的是我无法发布截图。但是,在Eclipse中,您可以访问: 调试配置&gt; PHP Web应用程序&gt;然后选择你的发布&gt; “调试器”选项卡&gt;使用Server Debugger下拉列表选择XDebug&gt;点击“应用”按钮,然后重试。