+ -
当前位置:首页 → 问答吧 → 关于PHP调试的一些概念

关于PHP调试的一些概念

时间:2005-12-21

来源:互联网

因为一直使用editplus写php程序,对集成环境一些概念还不是很熟悉

zendstudio5现在对中文支持得非常好,编辑器里字符处理速度也比较快,最爽的就是代码提示和自动完成速度非常快,我试了phped,phpedit等一些ide的类似功能,都有点慢,而且功能也都多多少少不如zendstudio,光是这个就让我现在离不开zendstudio了.

但是我对调试还是有些不懂

比如说我要完成一个项目,有数据库,有模板,用什么方法调试?用zend studio server吗?

还有本地调试是到底是在文件当前的位置进行调试,还是复制到一个新的地方进行调试?

那远程调试是要把整个工程都复制过去吗?如果只复制一个文件那文件里引用的其他文件怎么办?


我就是不明白,如果调试的话程序里所有的include,$_SERVER,模板这些东西到底是跟什么有关

作者: danielking   发布时间: 2005-12-20

比如说我要完成一个项目,有数据库,有模板,用什么方法调试?用zend studio server吗?
答:你既可以选择本地调试和远程调试,这个没有不同。但是你需要确保使用其中一种方法的时候你的文件和数据库是可以对应的。也就是说链接地址和服务器的配置是正确的。而且你的ZendStudioServer可以安装在别的服务器上。
这是ZendStudioServer的下载地址:
http://www.phpchina.cn/downloads/Zend/ZendStudio/Server/

还有本地调试是到底是在文件当前的位置进行调试,还是复制到一个新的地方进行调试?
本地调试是在文件的当前位置进行调试。请注意,在本地调试的时候,不需要你在电脑里面搭建PHP的服务器环境。临时的文件输出的路径你可以通过工具-->首选项-->调试里面进行设置。

那远程调试是要把整个工程都复制过去吗?如果只复制一个文件那文件里引用的其他文件怎么办?
如果使用远程调试,建议把相关的文件复制过去。因为你在文件里面制定的引用路径下面服务器并没有该文件。

在调试的时候,程序里面所有的include,ZendStudio会自动加载他们。$Server是表示PHP参数,就像$_POST、$_GET一样。

作者: PHPChina   发布时间: 2005-12-20

谢谢
我下载了ZendStudioServer,安装成功,但是还有些问题

1.默认设置的话所有调试是运行服务器的根目录的dummy.php,那就是说项目中所有文件调试环境(如路径)都一样?
比如我的项目中有个index.php,还有个admin/index.php,里面都引用了一个文件include/class_common.php
一个引用方法是include 'include/class_common.php',一个是include '../include/class_common.php'
那在调试服务器里,class_common.php放在哪里呢?

2.如果修改调试URL可以改变调试的位置,那我一会需要调试./下的文件,一会需要调试./admin/下的文件,我需要把调试URL改来改去?而且每个URL下必须都有dummy.php?

3.这个能调试到什么程度?查看运行到某一行时变量的值?还有调试窗口里的堆栈是什么?
再加上输出缓冲区,调试的内容就这些吗?

4.怎么有时候调试,只有Text有输出,HTML里面什么都没有,Text明明有输出,而且在Text选择使用浏览器显示也能看到结果
我试过只有重启ZDE才行

5.连接CVS的时候出现这个提示
cvs.exe checkout: warning: failed to open C:\Documents and Settings\Administrator\ZDE\config_5.0\.zdecvspass for reading: No such file or directory


再次感谢
以前在英文的Zend论坛上我总是说不清楚,现在好了,有中文的可以问个明白

作者: danielking   发布时间: 2005-12-21

1、dummy.php文件只是一个调试的链接文件,只需要把它放在根目录就可以了。把你要调试的文件放在该根目录下(包括文件夹)。因为你可以用许多域名来调试,所以根目录下面都会有一个dummy.php

2、如果文件夹include和文件index.php都在根目录下面,他们就可以调用文件了。

3、调试可以用断点调试,也可以对某些特殊的参数做监视点,监视某些参数。还可以逐行调试。还可以让程序执行到你的光标处。在程序调试的过程中,你随时可以用菜单栏上面的红色停止键停止调试。

4、调试过程中的堆栈主要是以不同的脚本为基础的调试信息,比如你在index.php里面调用另一个php文件。就会有两个main()堆栈,每个main()里面的信息表示每个脚本里面的模块信息。

5、在调试没有完全结束的时候,调试输出的html是空白的。

6、你在用CVS的时候,是不是用的一般用户,因为我看到你是用管理员安装的ZDE。

作者: PHPChina   发布时间: 2005-12-21

2.但如果我是调试admin/下的index.php呢?就是说发布后这个index.php应该是在admin目录下的,如果调试的时候是在根目录下,那它相对与include的位置岂不是和在admin下相对include的位置不一样了吗?
比如说如下的结构
./admin
./admin/index.php
./include/c.php

5.调试已经结束了,红色的停止按钮已经是灰色的了,可html还是空白,输出缓冲区里也什么都没有

6.用cvs和管理员或者普通用户有关系?也就是说使用cvs的时候还需要在zde之外做其它事情?我记得以前用某个版本zde时,输入cvsroot,开始连接就会询问密码.

作者: danielking   发布时间: 2005-12-21

答:
  2、ZDE不会自行修改你调用文件的路径参数,这样会干扰你的调试。所以调试的时候你需要调试的是./admin/index.php。也就是说无论是本地的文件或者是服务器上的文件,都是调试./admin/index.php。是调试DocumentRoot/admin/index.php,而不是DocumentRoot/index.php。这时的调用路径可以是"../include/c.php"(建议)。

  5、输出缓冲区是在调试的过程显示的。html界面的窗口是右边的“调试输出”窗口。这个窗口包含两个部分,第一"Text",第二"Html"。如果在"Text"窗口里面有html代码的显示输出,"Html"中就可以显示网页。

  6、你看系统提示,是找不到路径。
     cvs.exe checkout: warning: failed to open C:\Documents and Settings\Administrator\ZDE\config_5.0\.zdecvspass for reading: No such file or directory。
     这是一个管理员的文件夹的路径。系统提示在这个路径下面找不到.zdecvspass文件

作者: PHPChina   发布时间: 2005-12-21

2就是说zde会参照本地的目录结构调试程序?在本地我c.php相对与admin里的index.php是../include/c.php,那调试的时候任何设置不用修改?那c.php放在服务器的什么位置呢?

5text窗口里有输出,但html中没有输出,呵呵,是真的,重启zde就没有问题了

6确实没有没有这个文件啊,那我该怎么办?

作者: danielking   发布时间: 2005-12-21

2、无论你调试的是本地的文件,还是服务器上的文件,文件的路径都是一致的就可以了。如果你调试本地的文件,ZDE就在本地找。如果你调试的是服务器上的文件,ZDE就在服务器上找。
   而这些跟你采用本地环境调试还是采用服务器环境调试是无关的。

5、6,请把 C:\Documents and Settings\Administrator\ZDE 这个文件夹的内容压缩发上来。

作者: PHPChina   发布时间: 2005-12-23

晕啊,你好像理解错我的意思了,能否用qq聊?呵呵
我的是9142893

作者: danielking   发布时间: 2005-12-23

http://tmp.cs99.net/ZDE.rar

作者: danielking   发布时间: 2005-12-23

引用:
原帖由 danielking 于 2005-12-23 11:23 发表
晕啊,你好像理解错我的意思了,能否用qq聊?呵呵
我的是9142893
好的,我加你QQ。

作者: PHPChina   发布时间: 2005-12-25