使用Xdebug调试PHP程序

XDebug是个好东西啊,用来调试PHP程序的,可以和Eclipse配合。

配置步骤:(Windows+Apache+php环境)

1.下载和PHP版本环境相适应的XDebug版本,放置于PHP目录,主要None-ThreadSafe版似乎是用来在CLI方式下使用的,一般不需要

2.修改php.ini文件,参考如下

[Xdebug]
;zend_extension_ts	= "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6.dll"
;发现在PHP5.3+Apache(CGI)方式下,似乎必须使用 zend_extension 加载才能成功
zend_extension		= "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6-nts.dll"

xdebug.auto_trace		= off		;开启自动跟踪

xdebug.remote_autostart		= off		;开启远程调试自动启动
xdebug.remote_enable		= 1
xdebug.remote_host		= 10.5.184.251
xdebug.remote_port		= 9000
;xdebug.remote_handler		= “dbgp”

xdebug.show_exception_trace	= On		;开启异常跟踪

xdebug.collect_vars		= On		;收集变量
xdebug.collect_return		= On		;收集返回值
xdebug.collect_params		= On		;收集参数

注意:remote_host应该填写远程调试机的地址,而不是PHP服务器的地址,在Xdebug运行方式下,调试工具实际是调试过程的服务端,Xdebug会主动连接指定的remoete_host,从而建立调试通讯。所以要注意调试机的防火墙问题


3.配置调试工具,Eclipse就很好用,具体不说了,摸索下就可以了

继续阅读“使用Xdebug调试PHP程序”

(77)

Windows系统下WEB服务器自动架设安装包的比较

这是我老早写的一个笔记了,刚才翻出来了,有些内容可能已经过时了,随便看看吧。所有测试均在Win2003Server下进行。

AMP环境架设

WAMP5 1.7.2

o 安装简单,安装过程英文,自动配置界面简单,功能简单
o 默认没有启用Short_tag,gd 等常用功能

XAMPP

o http://www.apachefriends.org/en/xampp-windows.html
o 注意:默认安装完成没有任何安全设置!!必须立即设定一些安全设置,包括:Mysql Root帐号等等!
o 集成软件较多
o 自动配置界面略优于WAMP
o 仅适合于本地测试,调试,如果使用在正式的服务器上,必须仔细进行安全设置!!

AMPServ

APMServ 5.2.0 是一款拥有图形界面的快速搭建Apache 2.2.3、PHP 5.2.0、MySQL 5.0.27&4.0.26、SQLite、ZendOptimizer、OpenSSL、phpMyAdmin、SQLiteManager,以及 ASP、CGI、Perl网站服务器平台的绿色软件。

集成软件:

* Apache 2.2.3          [HTTP服务器]
* NetBox 2.8 Build 4128 [HTTP服务器+ASP脚本解释引擎]
* PHP 5.2.0             [PHP脚本解释引擎]
* MiniPerl 5.8          [Perl脚本解释器]
* MySQL 5.0.27          [MySQL数据库服务器]
* MySQL 4.0.26          [MySQL数据库服务器]
* SQLite 3.3.8          [SQLite数据库服务器]
* phpMyAdmin 2.9.1.1    [MySQL数据库在线管理工具]
* SQLiteManager 1.2.0   [SQLite数据库在线管理工具]
* ZendOptimizer 3.2.0   [PHP脚本加速引擎]
* OpenSSL 0.9.8d        [HTTPS(SSL)安全传输协议]

特点:

* 直接解压安装
* 内置Apache虚拟主机管理
* Myslq5.0 和 Mysql4.0可以方便的并存
* 默认Mysql没有密码!!
* 自动配置界面较乱,功能不少,但仍然缺少很多必须的功能

APM_Setup (推荐)

APM_Setup 5 for Win32 ( http://www.apmsetup.com/ ,http://www.isk.com.cn )
国内软件,与PHP_SETUP_for_IIS是同一个公司出品的。
– Webalizer Version 2.0.1 – http://www.webalizer.org
– MySQL Version 4.0.26 – http://www.mysql.com
– PHP Version 4.4.3-dev – http://www.php.net
– Zend Optimizer Version 2.6.0 – http://www.zend.com
– phpMyAdmin Version 2.7.0-pl2 – http://www.phpmyadmin.net
– Apache HTTP Server Version 1.3.34 – http://httpd.apache.org
文件:APM_Setup5_2006_01_23_CN.exe
说明:

* 似乎是从摸个国外的版本修改过来的
* 自动配置界面较丰富
* 内置了一个服务器管理的WEB界面,但似乎存在一些BUG
* 集成软件版本较旧
* 默认数据库密码是:ampsetup,注意ampsetup配置界面中的Mysql密码填写处并不是用于修改Mysql密码的,而是需要在正常修改完Mysql密码后在此处填写新密码,以便于管理。

IIS环境架设

PHP_Setup_for_IIS_v20060119_CN.exe (mysql 4 + PHP5)

o PHP映射仅影响到默认网站,如果新建网站还需要重新配置映射
o 默认以CGI方式映射
o 默认WWW目录没有可写权限,需专门设置.

* PHP_Setup_for_IIS_v20060119_CN.exe (mysql 4 + PHP4)

o 注意:自动对wwwroot目录增加了一个拒绝权限,禁止IUSR删除文件,必须在高级权限设置中删除这一权限
o 不支持PATH_INFO

* PHP_Setup_for_ISS (Mysql5+PHP5)

注意:自动对wwwroot目录增加了一个拒绝权限,禁止IUSR删除文件,必须在高级权限设置中删除这一权限
o 不支持PATH_INFO

(22)

从“UML何时死掉”谈起(转)

从“UML何时死掉”谈起 – 技术开发 | IT168.

【IT168 技术文章】得了一个机会(1),我问Ivar:“UML什么时候才会死掉呀”。我无意用这个透着促狭味道的问题去为难大师,实在是因为这是我一直以来思考着的问题。向UML之父去求解,自然是最好。

Ivar细毫没有认为我是在为难他,他诚恳的回答让我在那个会议中陷入了深思。他说:“什么时候面向对象死掉了,UML就死掉了”。(2)

一个问题看起来很复杂,但它的答案可能非常简单。一个答案看起来非常简单,但它可能是最正确的。一个正确的答案,也许毫无意义,但也许,那就是大师的答案。

很多我们现在看起来是非常“理所当然”的事情,就曾经困扰着大师们。比如说,我们现在都知道程序的基本逻辑是顺序、分支与循环。那么,“为什么顺序、分支与循环是基本逻辑呢”?“作为基本逻辑,它们充备吗?”谁能回答我?如何回答我?

继续阅读“从“UML何时死掉”谈起(转)”

(12)

UML关系定义的解析及思维导向图

对UML的关系定义一直有点感觉混乱,这是一天的学习总结,主要成果是下面的这张图,这张图没有按照一般的 Has a / Use a / Is a的3类法进行分类,而是把 Has a 作为了 Use a的一个子集来分析。因为没有看到任何其他参考资料使用了这种方式,所以这种方法未必完全准确,仅供参考。


UML关系解析思维导向图
UML关系解析思维导向图


继续阅读“UML关系定义的解析及思维导向图”

(65)

表格的标准化写法

HMTL中表格标准写法的一个比较完整的实例,仅供参考

结合了thead,tfoot,th的应用,还有CSS控制表格
注意:

  1. tfoot在fbody前面
  2. td,th,tr,thead,tfoot,tbody都可以省略结束标记
  3. th不仅仅用在表头中
Title

= = = =

=

=

= = = =

=

B

+

B

+

B

+

B

+

B

+

WordPress在保存会自作聪明的做一些源码改写操作,同时上面的表格也会受到wordpress本身的CSS影响,所以代码请以下面部分的源码为准

继续阅读“表格的标准化写法”

(11)

IE6重新安装及SFC源路径改变

重装IE

1.SFC /scannow

2: 打开“注册表编辑器”,找到注册表

[HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\Active SetupInstalled\ Components\{89820200-ECbD-11cf-8b85-00AA005b4383}]

将IsInstalled的DWORD值由1改为0就可以了。下载IE6安装包,安装。

3:开始运行:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %windir%\Inf\ie.inf

需要SFC源

改变SFC路径

点击“开始→运行”,输入“sfc /scannow”回车就会开始检查系统文件,

当SFC检查到有系统文件被替换或丢失时,它就会提示插入Windows XP安装光盘来进行修复

如你将Windows XP安装文件备份到了E:\winxp目录,
那么运行regedit打开“注册表编辑器”,定位至
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup]
CDInstall = 0
ServicePackSourcePath = E:\winxp
SourcePath = E:\winxp

(59)

Linux入门-软件管理篇(APT)

APT 软件安装管理系统,Debian下的系统软件安装管理工作

除非你确实知道你在什么,请一直保持使用APT相关工具来管理软件,而不要使用其它工具或方式。

准备工作

使用APT安装更新系统前,首先

  • 确保网络或其它来源(光盘等)可用
  • 如果使用网络镜像,请手动或自动选择最快的网络镜像来源
    #自动方式
    #参见下面的apt-spy
    
    #手动方式
    vim /etc/apt/sources.list
    

继续阅读“Linux入门-软件管理篇(APT)”

(16)

Linux入门-终端环境(bash)设置篇

Bash是Debian的默认SHELL,设置终端环境(bash)使Bash更好地为我们服务,我们需定制bash shell环境,这里讲述bash用户环境配置。

bash_profile、.bashrc、和.bash_logout
上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。注意bash_profile、.bash_logout并不总是存在,至少Debian中就没有默认创建

继续阅读“Linux入门-终端环境(bash)设置篇”

(308)

linux入门-系统时间设置篇

是的,没错,linux的时间设置需要专门写一篇来说明!

date #显示系统当前本地时间

STEP1:设定硬件时钟(BIOS)

debian/linux默认认为BIOS时间是世界时间(UTC),BOIS一般实际设置的是本地时间,所以需要修改它(特别在VmWare等虚拟机环境下)

#编辑rcS,设置UTC=no,告诉系统,硬件时间是否为UTC时间
#BIOS=本地时间,UTC=no
#BIOS=UTC时间,UTC=yes
vim /etc/default/rcS

#其它相关的命令:
hwclock --show --utc        #显示当前硬件时钟,硬件时钟假定为UTC时间
hwclock --show --localtime  #显示当前硬件时钟,硬件时钟假定为本地时间
hwclock                     #也可以用来设置硬件时间

继续阅读“linux入门-系统时间设置篇”

(14)

Linux入门-文本编辑器篇(VI VIM)

文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice … … ,文本模式下的编辑器有vi、vim(vi的增强版本)和nano … … vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下vi(vim)最简单的用法,以让Linux入门级用户在最短的时间内学会使用它。

nano 工具和DOS操作系统下的edit操作相似,使用简单,我们不作介绍了,如果您有兴趣,不妨尝试一下;

本文以Debian版Linux作为测试系统。

大部分Linux系统默认都安装了一个缩水版的VIM,同时使用VI命令时会以兼容方式启动这个缩水版的VIM。缩水版的VIM在一些功能上和完整版有区别,特别是在插入模式下的光标移动,推荐安装完整版的VIM

 apt install vim

继续阅读“Linux入门-文本编辑器篇(VI VIM)”

(25)

Windows平台下Apache+PHP4+PHP5+FastCGI安装笔记

修正:2010.3

1.PHP自5.3版起默认不在支持针对Windows的VC6编译版本,只提供VC9版本的,而APAche官方提供的Apache Windows编译包都是VC6的。所以我们需要使用第三方编译的VC9版本的Apache。

2.PHP 的 None Thread Safe 版本适用于CGI/FastCGI方式,而相应的Thread Safe版本适用于SAPI和Mod方式

3. http://www.apachelounge.com/download/ 这里提供了大量适用于Windows的LAMP有关预编译包,包括VC9版本的Apache和FastCGI,这个网站也是PHP官方推荐的网站。

原文

Go PHP5

很多开发组织已经开始参与到 Go PHP5 的活动中来了,PHP官方也早已经声明于2007年底停止对PHP4的所有技术支持,看来PHP5/6的广泛应用已经是不可抗拒的浪潮了,仅仅是时间问题,而且时间不会太长。

Apache+PHP+FastCGI

对于目前的过渡阶段,很多开发者还是需要一个可以实现PHP4和PHP5共存的开发环境,这两天尝试在Windows下使用APACHE环境配置了一个PHP4和PHP5共存的环境,请注意:此配置使用 CGI 运行方式,而没有使用常见的 Apache modules 方式。我曾经尝试使用 Apache modules方式配置双PHP,但没有成功。

关键特性:

  1. Windows+Apache+PHP(Apache2.0下测试)
  2. PHP4+PHP5共存
  3. FastCGI

以下是配置中用到的Apache Conf:

继续阅读“Windows平台下Apache+PHP4+PHP5+FastCGI安装笔记”

(83)

PHP框架基准测试比较

这篇文章是一个翻译,英文原文在 PHP framework comparison benchmarks,我的英文水平很一般,可能会有翻译不确切的地方(把握不大地方使用斜体进行了标志,并附带了英文原文),请指正,并参看原文。 Emeric.Lee 2008.10.18

为了讨论我在另一篇文章(重新审视PHP框架 CodeIgniter VS Zend)中作出的关于PHP框架性能的比较,我决定公开我所取得的详细结果。我一开始没有公开这个测试结果是因为测试不是在完全隔离的条件下进行的(独立的客户端和服务器),但是每个测试结果应该是准确的,这也是我测试的目的。

另外,我仅仅使用了‘请求数/秒’ 作为性能的衡量标准,我不认为在实际应用中还有其它的因素可以更好的衡量WEB应用程序的相应速度。

工具

测试计算机有1.8G的AMD Sempron CPU,521M 内存,运行Ubuntu Gutsy (7.10) Desktop 操作系统。

我使用 httperf 运行测试,另外也使用apachebench 进行了一些重复测试,测试结果是吻合的。

我使用CakePHP, CodeIgniter, Zend Framework 和Ruby on Rails.分别建立了一个相同的首页,而且我还是用静态HTML和过程化的PHP代码(又称为套管程序)复制实现了相同的功能,以此作为测试基准。

我决定在测试中包含数据访问,测试中应用程序从数据库中提取了4条记录并生成结果页面。

有兴趣的人可以下载测试文件,包括Mysql数据库的SQL文件。测试代码假设数据库有Root用户并且没有密码(如果你准备自己运行测试,也许需要修改相关部分代码)。

测试结果

继续阅读“PHP框架基准测试比较”

(141)

重新审视PHP框架 CodeIgniter VS Zend

这篇文章是一个翻译,英文原文在 PHP frameworks revisited – CodeIgniter vs Zend,我的英文水平很一般,可能会有翻译不确切的地方(把握不大地方使用斜体进行了标志,并附带了英文原文),请指正,并参看原文。 Emeric.Lee 2008.10.17

我们计划从头开始一个新项目,为此评估了一些PHP框架。我们的备选列表有CakePHP , CodeIgniter , Symfony和Zend 。 我们分别使用这4种框架编写了一个相同的小应用(一个简单的Wiki应用),希望我们能尽快选定一个最合适的。

声明:我会努力确保自己的客观性,虽然我是一个ColdeIginter的爱好者。我所工作的公司是Zend的合伙人(我们已经使用了Zend Platform 和 Zend Studio)。I can’t help factoring that in

继续阅读“重新审视PHP框架 CodeIgniter VS Zend”

(65)