zend studio调试php程序(使用xdebug),cli,cgi,sapi,php程序执行流程

来源:互联网 发布:java 编程培训 编辑:程序博客网 时间:2024/05/13 13:09

一.使用xdebug调试php程序

1.下载xdebug:http://xdebug.org/download.php

2.修改php.ini,在最底下加入
[Xdebug]
zend_extension = "d:/php/ext/php_xdebug-2.2.1-5.3-vc9.dll"
;以下是参数
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir="d:/Temp"
xdebug.profiler_enable=on
xdebug.profiler_output_dir="d:/Temp"
xdebug.remote_enable = true
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:/Temp"
;允许连接的zend studio的IP地址
xdebug.remote_host = 127.0.0.1
;反向连接zend studio使用的端口
xdebug.remote_port = 11115(这个端口默认是9000,你根据自己的实际情况可以不用改,但必须和zend studio里设置的xdebug端口一样)
;用于zend studio远程调试的应用层通信协议
xdebug.remote_handler = dbgp

3.重启apache,调用phpinfo();,出现xdebug信息即配置成功,或调用命令行:php -v,没有出现加载xdebug失败即成功,如果不成功,尝试下载其他的xdebug,比如ts版,32位或64位,一个一个尝试

4.打开zend studio12,Window->Preference->PHP->Debug,选择debug服务器,如果对应的debugger不是xdebug,点击servers页面,设置debugger

5.在installed debuggers中,设置xdebug的端口和php.ini一致


二.cli,cgi,sapi

1.php程序执行时,首先调用sapi,sapi调用php内核执行,执行结果通过sapi传给apache


2.CGI和CLI都是SAPI的类 型,cgi是通过web服务器调用sapi,cli是通过终端命令行调用sapi


3.

首先一个问题:在命令行下执行:php -r 'echo 12;'

控制台会打印出 12;

这个过程不是很奇妙么,我输入的是shell命令,但是执行的却是php脚本。php脚本执行完成之后的输出还能在控制台输出。

那在这个shell命令(控制台命令)和php中间一定有一种接口,能将shell的参数,代码,等转换成php,然后将php的输出转换成shell的输出。这个接口就叫做SAPI(Server Application Programimg Interface)。它就相当于PHP外部环境的代理器。

那么由于PHP可以应用在终端上,也可以应用在Web服务器中,所以呢,应用在终端上的SAPI就叫做CLI SAPI,应用在Web服务器中的就叫做CGI SAPI。在windows下安装php你会看到两个exe:php.exe和php-cgi.exe这个就对应的是这两种SAPI。再比如,在控制台上使用php -v,你就会发现PHP的版本信息中有个(cli)标示,就代表你这里的php应用程序使用的是cli SAPI

0 0
原创粉丝点击