惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
Recorded Future
Recorded Future
Jina AI
Jina AI
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
博客园 - 【当耐特】
雷峰网
雷峰网
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
有赞技术团队
有赞技术团队
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
Cyberwarzone
Cyberwarzone
K
Kaspersky official blog
F
Full Disclosure
Martin Fowler
Martin Fowler
Spread Privacy
Spread Privacy
D
Docker
C
Cisco Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Hacker News: Front Page

博客园 - 岁月无声

Spring Boot(3)---自定义spring boot starter 问题 那就开始吧---写在2014年8月 基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案) 从操作系统机制浅谈服务器及服务平台方案的选择 Node.JS平台上的数据库Redis,MongoDB,HBASE,MySQL Node.JS 模块,包管理与开发 Node.JS进行简单新技术分析及环境搭建 MongoDB (1)---复制集与sharding安装配置 MongoDB (5)---不仅仅是数据库 MongoDB (0)---写在前面 NoSQL--MongoDB选择 云平台综述 物联网(1)----手机NFC识别方案平台 快速建立一个手机网站 基于HTML5手机技术方案(如Phonegap)的调试方案 由NodeJS浅谈无敌的前端开发工程师 大话网站---从Hello World到高并发网站 浅谈预演框架选择 最后的绝唱-----Symbian 最新的IDE开发环境搭建(Updated on 2011-03-07)
PHP调试环境
岁月无声 · 2013-02-16 · via 博客园 - 岁月无声

PHP调试总是那么让人觉得不满意,但还是要用呀:),就如xampp,LAMP,LNMP,等配置,总是随着版本升级有这样那样的变化,有空写一个通用的配置工具与大家共享,呵呵。

Step 1:IDE选择

    由于以前用的工具太多,常会在eclipse中加载android,maven,j2ee,SSH,CXF等一系经工具,导致出现莫名其妙的问题。于是有了下面的建议:

    下载Eclipse for PHP Developers,地址 http://www.eclipse.org/downloads/packages/eclipse-php-developers/heliossr2

    当然,你也可以选择去下载PDT插件,或直接从eclipse上安装这个插件。

Step 2: debugger 选择

     有两个Debugger可以选择,Zend Debugger,另一个是Xdebug,当然由于Xdebug完全免费,下载简单。首先它,地址 http://xdebug.org/download.php

     下载时,要针对你所使用的平台下载对应的文件,如果在windows下,可以下载相应的binaries.也就是动态库,至于64位的问题,你一定要下载与你的PHP所使用的环境一致。比如,虽然你用的是windows 64操作系统,但使用的是32位的php编译版本,你也要使用对应的32位的xdebug.这个我在配置时,花了不少时间去解决这个问题

Step 3: PHP与debugger整合

      解压xdebug,把得到的dll 放到你的Web 服务器所用的php相对应的扩展目录中,因为我常会在一台机器上有数十种开发环境,所以会遇到各样的问题,你在配置时一定放到你调试时所使用的php环境下。Eclipse for PHP自己并不带有php环境。具体方法就是:

       a,把php_xdebug-2.2.1-5.4-vc9.dll放到php的 ext目录下。

       b.修改php.ini 在文件后面加下如下:

  [Xdebug]

  zend_extension ="D:/Develop/Web/PHP549/ext/php_xdebug-2.2.1-5.4-vc9.dll" ;(路径根据自己情况设置)

  xdebug.auto_trace = On
  xdebug.show_exception_trace = On
  xdebug.remote_autostart = On
  xdebug.remote_enable = On

    切记一点就是zend_extension这个指令的使用,在PHP5.3以前的版本,要根据PHP对线程的安全设置,或者根据DEBUG BUILD设置情况使用不同的zend_extension指令

    比如,如果PHP设置了线程安全,就要用zend_extension_ts =  ="D:/Develop/Web/PHP549/ext/php_xdebug-2.2.1-5.4-vc9.dll" 来代替zend_extension.否则就出错,而在PHP5.3以后的版本

   就不必这样麻烦了,都直接使用zend_extension而zend_extension_ts不再被使用。

   测试配置是否成功的方法很简单,启动web服务器,用phpinfo()打印php环境数据,如果看到Xdebug 一大堆的参数及参数值,你就成功了。如果没有,你就慢慢配置吧,如果遇到问题,你就要去读那些英文资料了。

   资料地址:http://www.eclipse.org/pdt/articles/debugger/os-php-eclipse-pdt-debug-pdf.pdf 如果不成功,就是你英文水平的问题了:)

Step 4: 配置 PDT与xdebug进行整合。

    a. 打开eclipse for php developers中的Preferences->PHP->Executables. 加入第三方的PHP环境,就是我们刚才配置过的那个PHP目录(假设你有很多PHP环境的话,就要选对哟),这里Add后,主要是录入PHP executable path,就是PHP.exe或者php-cgi.exe,这是不同的php执行方式。选哪一个都一样。同时要选择debugger,你要选择xdebug.

   b. 打开eclipse for php developers中的Preferences->PHP->Debug ,在Default Setting中,PHP Debugger选择Xdebug, Server可以选择 Default PHP Web Server PHP Executable就选持刚刚加入的executable就可以了。

Step 5: 进行初步脚本调试。

     经过以上的配置,就可以创建PHP项目,并对项目中的php进行脚本直接调试了。在项目上右键选择Debug as ->PHP Script进行调试,当在,这个Debug要配置一个Debug的Configuration.在这个调试configuration,中选择Alternate PHP 为刚才创建的 PHP 的Executable. 下面的PHP File就是选择你想单步调试的php文件即可。

    这里会有一个bug,就是本置完以上步聚时,一定要重启一下eclipse for PHP,不然会出现xdebug工作,但eclipse for PHP不显示调试过程的情况,即看不到断点是否被执行到。重启一下就ok.

Step6: 进行远程Web调试

    在上面的基础之上,你要对Default PHP Web Server进行配置。主要是映谢URL到你的php文件。比如网站调试时,第一个是index.php在你的项目里是myproject/index.php,就要在web server的配置里的mapping里映射

   http://localhost/myproject  --------- myproject/ 这样在调试时访问http://localhost/myproject/时,就会映谢到你的index.php文件了。这里的更多细节就不想写了

主要是理解调试的 原理:

  PHP Script 调试就是用第三方的PHP.exe来执行你的项目中的php文件,会通过xdebug把执行的过程信息通过9000网络端口传给你的eclipse for PHP.然后eclipse 把调试信息再传给xdebug.