我尝试使Xdebug在Homestead Vagrant VM内运行以连接到Atom IDE。因此,通过vagrant ssh
创建了SSH连接,并键入了以下命令:
xon
sudo nano /etc/php/7.2/fpm/conf.d/20-xdebug.ini
基于该question,我将以下设置设为20-xdebug.ini
:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.max_nesting_level = 512
xdebug.remote_host= 10.0.2.2
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
然后我的Atom配置如下:
"*":
"atom-autocomplete-php":
autoloadPaths: [
"vendor/autoload.php"
]
binComposer: "/usr/bin/composer "
binPhp: "/usr/bin/php"
classMapFiles: [
"vendor/composer/autoload_classmap.php"
]
insertNewlinesForUseStatements: true
"atom-package-deps":
ignored: []
core:
telemetryConsent: "limited"
editor:
fontSize: 13
"exception-reporting":
userId: "9f9c6aa7-2152-104d-a113-56d710236d00"
linter: {}
"linter-ui-default":
panelHeight: 300
"php-debug":
DebugXDebugMessages: true
currentPanelHeight: "357px"
currentPanelMode: "bottom"
currentPanelWidth: "493px"
server:
keepAlive: true
protocolDebugging: true
redirectStderr: true
redirectStdout: true
serverPort: 9001
showWelcome: false
xdebug:
pathMaps: "[{\"remotePath\":\"/home/vagrant/code/\",\"localPath\":\"/home/pcmagas/Kwdikas/php/apps/ellakcy_member_app/\"}]"
"tree-view":
autoReveal: true
hideVcsIgnoredFiles: true
然后我将Firefox的“ Xdebug Helper”插件配置为:
但是当我在代码中放置一些断点时,执行并不会停止于它们/未显示。同样在我的宅基地上,我像这样ping通重新连接的IP:
vagrant@ellakcy-member-app:/etc/php/7.2/fpm/conf.d$ ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.064 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.112 ms
64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.111 ms
64 bytes from 10.0.2.2: icmp_seq=4 ttl=64 time=0.121 ms
64 bytes from 10.0.2.2: icmp_seq=5 ttl=64 time=0.115 ms
64 bytes from 10.0.2.2: icmp_seq=6 ttl=64 time=0.130 ms
^C^C
--- 10.0.2.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, t
进一步的调查证明,Homestead VM能够通过netcat连接到我的主机(该命令在VM内运行):
nc -z -v -w5 10.0.2.2 9001
Connection to 10.0.2.2 9001 port [tcp/*] succeeded!
那我还有什么遗漏/配置错误,以及如何找出解决方法?
进一步的调查证明,php-debug
可以在不停止到任何断点的情况下启动和结束调试会话,如PHP Console所述:
您知道为什么调试会话即使有一些断点也会突然终止吗?
我将xdebug设置更改为:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9091
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=/var/log/xdebug.log
然后将侦听端口更改为9091
。 ide键更改为atom-xdebug
,但仍然无法使它停止到断点。同样,当runnin gover cli无法写入/var/log/xdebug.log
时。我应该手动生成它吗?
我也尝试使用xdebug_break()
强制执行断点,仍然没有结果。
我的路径映射也是:
[{"remotePath":"/home/vagrant/code/","localPath":"/home/pcmagas/Kwdikas/php/apps/ellakcy_member_app/"}]
我的本地路径由以下文件组成:
该项目也是用symfony 3.4编写的。
答案 0 :(得分:0)
为了使原子与无业游民一起工作,您应该使用以下xdebug设置:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 0
xdebug.remote_host=10.0.2.2
xdebug.remote_port = 9091
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=xdebug.log
请记住输入错误,例如。 xdebuf
也是为了使原子编辑器正确管理路径,请使用以下映射:
[{"remotePath":"/home/vagrant/code/","localPath":"^local_project_root^"}]
^local_project_root^
是包含整个源代码的顶级文件夹(在您的情况下,ellakcy_member_app
位于)。
还取消选中这些选项以及图像,如图所示:
如果选中,In将使原子无法在断点上正常工作。如果您有大量项目,请从树形视图中删除它们,并确保仅保留其中一个。您可以稍后添加它们,然后继续工作。