phpstorm调试问题

https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm

用Xdebug和PhpStorm实现的零配置Web应用调试

1. 安装xdebug

具体可以参考博客中关于deepin15使用一文和xdebug官网xdebug.org,用 /opt/lamp/bin/php --version或者执行带有函数phpinfo()的页面,可以检查PHP是否加载了xdebug扩展

注1:cli版php是否加载了xdebug,可以php  -i查看,网页版只能带phpinfo()的网页查看

注2:可以将xdebug的配置写成独立的xdebug.ini,xdebug默认远程监听端口9000,远程主机localhost,最简单的就是

[XDEBUG] 
zend_extension=/usr/lib/php/20151012/xdebug.so
xdebug.remote_enable=On 
xdebug.idekey=phpstorm

注3:可以将xdebug.ini放到/etc/php/7.0/mods-available目录下,然后,/etc/php/7.0/apache2/conf.d目录(此目录下的配置都会被包含)下建立一个软链接到xdebug.ini

注4:https://xdebug.org/wizard.php,该页面内贴入phpinfo()的输出信息,可以给出编译安装xdebug的向导信息。比较新的PHP版本,应该也可以git clone代码(git clone git://github.com/xdebug/xdebug.git),可以从https://github.com/xdebug/xdebug 了解当前的代码版本

2. 准备phpstorm

点击phpstorm窗口右上角(导航条右侧部分)带电话机的按钮 “Start Listening for PHP Debug Connections”,这表示phpstorm开始监听(也可以从Run菜单找到该功能)

 

3. 在源代码中设置断点

你可以在PHP源代码中直接点击行左区域或者按Ctrl + F8 来设置或者取消行断点(更多断点方式可以看Run菜单),也可以从Run菜单设置在每个PHP脚本的首行中断执行

 

4. 从服务器激活调试器

为了激活调试器,你需要设置特殊的GET/POST或者COOKIE参数,你可以手动来实现,更方便的做法是使用特殊的工具,如浏览器工具条或者书签。方法是打开网址https://www.jetbrains.com/phpstorm/marklets/,输入Xdebug的IDE key = phpstorm,点击GENERATE,将链接Start debugger和Stop debugger拖放到Chrome书签栏(前面的网址提到的方法是帮你生成特别的书签(即js代码),然后你加入到书签,可以通过点击书签执行对应的js代码来实现参数设置。也可以用麻烦的GET型参数XDEBUG_SESSION_START,例如http://phpstorm.localhost/apmts_dv2017/web/index.php?r=site/about&XDEBUG_SESSION_START=phpstorm

5. 从浏览器打开要调试的页面,点击书签Start debugger,在浏览器启动一个调试会话,

6. 然后刷新重新加载页面。

7. 注意:这个时候phpstorm是处于监听状态的,所以,它将捕获到进来的xdebug连接请求,而且因为已经设置了断点,所以,phpstorm中断在断点行上。如果服务器远程文件和本地项目文件不能够对应,phpstorm就弹出对话框让你设置(如果你建立项目时未设置项目部署配置,就会出现不对应的情况)。

 

https://confluence.jetbrains.com/display/PhpStorm/Debugging+PHP+and+JavaScript+code+at+the+same+time+in+PhpStorm

在phpstorm中同时调试PHP和Javascript代码

准备工作:Xdebug已经安装并配置,安装了phpstorm调试器书签或者对应浏览器的调试扩展,安装了Chrome浏览器扩展(JetBrain IDE support for Chrome,需要翻墙安装)。

1. 监听PHP调试连接

点击导航条右侧的Listen for PHP Debug Connections按钮或者使用菜单Run | Start listen for PHP Debug Connections 来启动监听

2. 启动 Javascript调试器

根据实际需要,我们可以使用phpstorm内置的web服务器在本地运行我们的应用,或者使用任何其他的本地或远程机器上的web服务器

2.1 (可选)使用内置webserver

要启动phpstorm的Javascript调试器,点击菜单Run | Debug,如果选中的文件是PHP文件,会出现两个入口(如果额外配置了非内置web服务器的调试,会有更多入口),应当选择图标是浏览器样子的那个(而不是PHP脚本图标的那个)。启动后,我们可以在Javascript中下断点,使用Javascript调试器。

2.2  (可选)使用非内置webserver

当使用本地的webserver,如Apache或Nginx,或者在远程webserver或Vagrant机器上开发的时候,我们可以使用Run/Debug配置来启动Javascript调试器。使用工具栏或者菜单 Run | Edit Configuration 来创建一个调试配置:

-点击+按钮,添加一个新的Javascript Debug调试配置

-输入完整的URL,指向服务器上我们要调试的页面

-(可选)提供一些映射,从而phpstorm可以确定哪儿去找到远程URL对应的本地文件。这一般在本地项目结构和远程服务器不同时需要。如果使用了用phpstorm部署php应用,映射会基于部署配置复用

配置好上述信息,我们可以从工具栏启动Javascript Debug会话(从下拉列表选择之前新加的Javascript Debug调试配置,然后点击带电话机的按钮)。

3. 从浏览器启动PHP调试会话

从浏览器,我们可以使用phpstorm调试用书签或浏览器调试扩展来启动php调试会话(具体参照前面《用Xdebug和PhpStorm实现的零配置Web应用调试》)。这步是指示PHP服务器产生一个到phpstorm的连接并打开调试器。一旦调试器附加上了,我们能够同时调试Javascript和PHP,必要时,phpstorm将在两种调试器之间切换。

4. (使用xdebug时可选)同时开启Javascript和PHP调试器

从菜单Run | Edit configurations添加一个新的Javascript调试配置,输入完整的URL,然后添加?XDEBUG_SESSION_START=phpstorm 这样的GET型参数,这样配置后,启动监听PHP调试连接,启动新建的调试配置(因为这是个Javascript调试配置,所以Javascript调试器被调用,又添加了GET型参数来唤醒PHP调试器,所以,两个调试器都启动了)

5.  故障说明:为什么不能对.php文件中的Javascript代码下断点? 答案是目前Phpstorm不支持PHP和Javascript在同一个文件的同时调试! 唯一的解决办法是把Javascript转移到独立的文件,然后从php文件(HTML部分)引用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值