用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤


Posted in PHP onJanuary 19, 2014

本人主要是做ASP.NET开发的,但有时候也会接触到PHP,而且我认为PHP有很多源码值得学习,我们不是学习PHP代码的写法,而是学习源码的实现思路,或者免强叫为算法。

作为一名非专业的PHP开发者,想要较方便地读懂并搞清楚一个PHP功能模块的运行细节,搭建一个PHP调试环境,然后单步调试程序,以掌握程序的整个运行过程显的尤为重要。

一、 准备安装文件

1、PHPnow-1.5.6。“PHPnow 是 Win32 下绿色免费的 Apache + PHP + MySQL 环境套件包。简易安装、快速搭建的 PHP 环境。”

2、ZendDebugger-5.2.14。Zend公司的PHP调试工具或叫插件。 http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.14-cygwin_nt-i386.zip

3、ZendStudioEnterpriseEdition-v5.5.0。据说PHP业界最著名的IDE,不知道基于Eclipse插件的PHP开发环境如何,有时间玩一下再说。

二、 配置程序

1、安装PHPnow。把安装包PHPnow-1.5.3.zip解压到一个地方,像我这里解压到“D:\soft\PHP”,然后双击PHP文件夹中的“Setup.cmd”开始安装,中间安装到MySql的时候会提示你输入数据库用户名和密码,本地测试用一般就都设为“root”。安装完成后在浏览器输入以下地址http://127.0.0.1/,如果成功的话,你将会看到如下画面:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

注意:如果你的系统之前有安装IIS,并且IIS是运行着的,要先把IIS停止掉,不然80端口会冲突,虽然通过“PnCp.cmd”工具可以修改Apache端口,但不建议这样改。

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

2、安装ZendDebugger。把ZendDebugger-5.2.14-cygwin_nt-i386.zip解压到PHPnow安装目录,即“D:\soft\PHP”,然后把ZendDebugger-5.2.14RC9-cygwin_nt-i386文件夹名字改成ZendDebugger这样短文件名,进到ZendDebugger目录,我们可以看到下面那样的文件结构:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

现在要把文件夹中的X_X_x_comp文件夹重命名为php-X.X.x,比如将“5_2_x_comp”重命名为“php-5.2.x”,因为我的测试环境都是php5.2的,所以我可以只改“5_2_x_comp”这一个文件夹。这里的改动是为了等一下在php.ini中配置它。

现在去PHP安装目录修改PHP配置文件,这个文件通常被命名为“php.ini”,让服务器能正确加载我们的模块。但是这个PHPnow环境下的PHP配置文件不叫“php.ini”,而是“php-apache2handler.ini”,我们怎么可以知道当前WEB服务器所用PHP的配置文件名呢。下面就是一个办法:在“D:\soft\PHP\htdocs”目录,建立一个phpinfo.php文件,并在其中输入内容“<?php echo phpinfo(); ?>”,然后打开浏览器可以看到如下信息,反白显示路径就是当前PHP配置文件所在路径了:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

注意:这里指的PHP配置文件是网站依赖的PHP配置文件,不是下面提到的Zend Studio目录下的php.ini文件(Zend Studio也自带了几个不同版本的PHP),如下图:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

修改“D:\soft\PHP\php-5.2.9-2-Win32\php-apache2handler.ini”文件。用记事本打开该文件,移动侧栏滚动条至最底部,在文档尾部可以发现以下配置节点:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

在其尾部追加:

zend_extension_manager.debug_server_ts="D:\soft\PHP\ZendDebugger"
zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.8/24
zend_debugger.expose_remotely=always

最终应该像这样:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

解释一下:

(1);zend_extension_ts="D:\soft\PHP\ZendDebugger\5_2_x_comp\ZendDebugger.dll"这是我注释的,因为这样设置zend_extension_ts重复,出现不能与ZendOptimizer共存情况。

(2)、zend_extension_manager.debug_server_ts="D:\soft\PHP\ZendDebugger",这里指到目录就行了,PHP会自动根据自己版本去下面找php_X_X_X这样文件夹下面的dll文件,这也是上面我们为什么要对ZendDebugger下面子目录改名的原因。

(3)、zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.8/24,这里后面的192.168.0.8改成你自己的IP就行了,可以像下面那样查看到自己的IP地址:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

后面的“32”,“24”不用改,它们不是目录名,而是子网掩码类型代号,“32”代表“255.255.255.255”,“24”代表“255.255.255.0”。

在浏览器打开:http://127.0.0.1/phpinfo.php,如果能看到如下信息则表明安装成功,注意看最后一行“with Zend Debugger v5.2.14, Copyright (c) 1999-2008, by Zend Technologies”。回到http://127.0.0.1/我们发现组件支持框里Zend Optimizer支持情况还是“Yes”的,说明我们Zend Debugger与Zend Optimizer是共存运行的(网上提供好些教程是不共存运行的,那样不够完美)。

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

3、安装Zend Studio。解压ZendStudioEnterpriseEdition-v5.5.0.270.rar,执行解压文件后的win_setup.exe文件,默认一路Next下去,这样就把Zend Studio成功安装在C盘了。运行它,然后关闭,因为默认是英文的,我们去改成中文。在C盘(即Zend Studio安装所在盘),搜索文件“desktop_options.xml”,如下图。

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

找到后用记事本打开,找到:

<customized_property ID="desktop.language">
 <locale language="en" country="" variant=""/>
</customized_property>

把上面的en改成zh并保存,然后把这个文件标记为“只读”( Zend Studio在特定的时候自动重启会改回默认设置,设成“只读”它就无能为力了)。另外像下面的编码选项也可根据实际情况修改:

<customized_property ID="editing.encoding">
 <encoding name="Default"/>
</customized_property>

比如可以改为<encoding name="UTF-8"/>,在用Zend Studio打开代码文件发现中文乱码时候可以修改这个选项看看。

三、 开始调试

从“开始菜单”找到“Zend Development Environment(Zend Studio)”并运行它。新建一个项目,并在这个项目中引入一个开发好的源码包,我这里的源码包在“D:\soft\PHP\htdocs\cms”,这cms是SupeSite7.0程序,在新建项目的调试选项里设置成像下图,其中Debug Server URL也可以是127.0.0.1这样的地址,只要几处设置同步就行:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤 用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

另外“工具”菜单“首选项”的“调试”标签也设置成如下图:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

现在检查一下:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

成功的话将显示“已与Debug Server成功连接。”对话框。

打开SupeSite7.0源码项目,选择Zend Studio内置浏览器,并在地址栏里输入:http://127.0.0.1/cms/ batch.search.php,这里我演示SupeSite7.0的搜索页代码调试。现在你直接按浏览器最左边的“介壳虫”按钮(从旁边倒三角可以选择不同的调试范围),直接进入batch.search.php页面调试(如果batch.search.php页之前不在编辑状态,即没有打开过,直接调试会自动打开,另外如果你用F11逐语句执行的话,当前调试页包含的外部代码文件也会被打开。

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

按调试按钮后,直接转到源码,光标定位在第一个语句了(这里我没有设置断点,并以F5方式调试程序),像下面那样:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

现在我们测试一下点击一个按钮提交表单值并捕获它。像下图那样,点“搜索”按钮后看关键字“What is CMS ?”是被如何处理的。你操作顺序必须像这样:打开http://127.0.0.1/cms/batch.search.php—>输入关键字“What is CMS ?”—>点击“搜索”按钮—>点击浏览器工具栏的“介壳虫”按钮。

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

调试后我们可以看到“What is CMS ?”是用什么变量存储并被处理的。如下图:

用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤

至此,整个Zend Studio+PHPnow+Zend Debugger服务器调试环境搭建完毕,并演示了使用方法。

PHP 相关文章推荐
如何使用动态共享对象的模式来安装PHP
Oct 09 PHP
关于PHP中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
php数字游戏 计算24算法
Jun 10 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
php解决约瑟夫环示例
Apr 09 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php实现短信发送代码
Jul 05 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 #PHP
php根据身份证号码计算年龄的实例代码
Jan 18 #PHP
php 启动报错如何解决
Jan 17 #PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 #PHP
php递归函数中使用return的注意事项
Jan 17 #PHP
使用PHP强制下载PDF文件示例
Jan 17 #PHP
5种PHP创建数组的实例代码分享
Jan 17 #PHP
You might like
php+dbfile开发小型留言本
2006/10/09 PHP
php 全文搜索和替换的实现代码
2008/07/29 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP创建XML接口示例
2019/07/04 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python实现桌面气泡提示功能
2019/07/29 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
大学生入党推荐书范文
2014/05/17 职场文书
2014年安全生产责任书
2014/07/22 职场文书
动物科学专业求职信
2014/07/27 职场文书
怎么写工作检讨书
2014/11/16 职场文书
大连星海广场导游词
2015/02/10 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Django展示可视化图表的多种方式
2021/04/08 Python
Pytorch 实现变量类型转换
2021/05/17 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android