专栏首页Jerry的SAP技术分享PHP CLI应用的调试原理
原创

PHP CLI应用的调试原理

我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application。

所谓CLI应用,是指这种脚本文件不需要任何Web服务器即可运行,当然, PHP运行时还是需要的。

我们在弹出的debug窗口里看到了XDebug:

XDebug是PHP调试的利器。在我的文件夹C:MyAppwampinphpphp5.5.12里面有个php.ini配置文件,文件的末尾有这样一个配置:

; XDEBUG Extension

zend_extension = "C:/MyApp/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"

;

xdebug

xdebug.remote_enable = off

xdebug.profiler_enable = off

xdebug.profiler_enable_trigger = off

xdebug.profiler_output_name = cachegrind.out.%t.%p

xdebug.profiler_output_dir = "C:/MyApp/wamp/tmp"

xdebug.show_local_vars=0

这里实际上就指明了XDEBUG的位置:

那么Eclipse?

使用任务管理器查看,当我用Eclipse调试PHP CLI应用时,出现了一个PHP.exe进程:

命令提示行:

C:MyAppwampinphpphp5.5.12php.exe -n -c C:Usersi042416AppDataLocalTempphp-inisession2307282238017995350.tmpphp.ini -d asp_tags=off -d short_open_tag=on C:Usersi042416scp20180425 est ewfile.php

-n 选项:不使用全局的php.ini文件

-c 选项:使用-c后面指定的php.ini, 即C:Usersi042416AppDataLocalTempphp-inisession2307282238017995350.tmpphp.ini

-d 选项:临时指定一个php.ini里没有的参数,即asp_tags=off

再看看这个我开始CLI调试后才临时生成的php.ini文件:

虽然有70多k,但是绝大多数是分号开头的注释,只有最后几行才是有效信息:

希望本文对大家理解Eclipse里使用XDebug进行PHP CLI应用的调试原理有所帮助。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP CLI应用的调试原理

    我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application。

    Jerry Wang
  • 小技巧:浏览器里显示成星号的密码,忘记了该怎么办?

    很简单,Chrome浏览器里按F12打开开发者工具,切换到Elements面板,点击下图Step1的图标,然后单击密码显示框,保持这个字段处于选中状态,然后切换...

    Jerry Wang
  • SAP CRM WebClient UI cross component跳转的一个具体例子

    Subject: 为什么design time时候看到的是ICQR,点了service之后看到02QR的代码被call到

    Jerry Wang
  • PHP安全配置小技巧

    腾讯云安全
  • 用PHP来执行定时任务

    上个月有个需求,用PHP写了一个接口给SDK使用,原始数据使用MySQL进行记录。热数据用Redis进行+1的原子操作。每隔一定时间,由一个PHP脚本(姑且就命...

    libo1106
  • 修改服务器配置,php.ini究竟在哪里?

    用户1272546
  • php.ini配置文件定位

    有时候,我们会遇到这种情况:不知道当前运行的php配置文件php.ini在什么位置 这个时候,使用如下命令

    luxixing
  • PHP XDebug 本地调试

    很久没写PHP了、同样很很久没有用XDebug了,近期有个简单的场景要用到,简单记录一下关键步骤。

    许杨淼淼
  • PHP中Redis扩展无法加载问题

    phpredis编译出来的redis.so也需要拷贝到"/usr/lib64/php/modules/"中;

    叫我可儿呀
  • 2018全国大学生软件测试大赛-安恒杯Web测试大赛write up

    这里的知识点是当代码中存在$_REQUEST['user_id']里面类似的参数的时候,使用" "、"["、"+"、"."这样的符号的时候回自动转化成"_"从而...

    安恒网络空间安全讲武堂

扫码关注云+社区

领取腾讯云代金券