PHP:windows下使用zend studio及相关产品搭建php调试环境

 更新时间:2016年11月25日 16:09  点击:1928

php是我这个JavaScripter向后走的第一站."工欲善其事,必先利其器",照搬在js、java来的经验,手册、调试环境、成熟代码范例是学习一项新技术的3个首要条件.中文的帮助手册已经有了,成熟的代码示例很多,就差调试环境了.

手册中关于调试环境的介绍了了数字,网上搜了一下php调试也没有得到完整可操作的好文,只得到了zend系列产品可以单步、远程调试.

经过反复尝试,终于搞通了,估计很多phper都在美美的使用呢,只是没公布完整的操作流程,我就写写在我的xp机器上搭建php调试环境的流水帐吧

从zend官方http://www.zend.com/en/downloads/下载Zend Core 2 、 Zend Platform、ZendStudio ,

下载mysql,phpMyAdmin

1、卸载原有的apache、mysql

2、安装Zend Core 2,安装过程中选择新装Zend Core提供apache,如果不卸载原有apache很可能会出问题,还不好查原因,所以为了最终目标保守点没错

3、安装Zend Platform.因为远程调试必须装这个

4、安装Zend Studio 安装过程会让你选择是否安装zend platform因为已经装过了就不用了,zend guard也不用装

5、ZendCore默认装的apache在Zend Core安装目录的同级的Apache2目录下 html文档目录是默认为其下的htdos目录,学习为主,安全起见也就不要改了

6、安装Zend Platform之后会发现已经有一个mysql在跑了,我本想就使用这个mysql,可是root用户密码不知道,无法连接上,所以重新下载了一个mysql.安装另一个mysql过程需要为mysql实例起个新名字,因为已经有个叫mysql的在跑啦,其他以路默认,记住root用户密码

7、安装phpMyAdmin,下载之后解压到htdoc下的一个子目录下,修改config.sample.inc.php为config.sample.inc.php,将$cfg[''Servers''][$i][''controluser''] = '''';和$cfg[''Servers''][$i][''controlpass''] = '''';两行的注释去掉,填写上刚才安装mysql的用户名和密码,访问phpMyAdmin目录,应该就可以跑了

8、apache和mysql都有了,就可以选择一个示例代码来装了.wordpress、discuz、phpwind啥都行甚至直接调试phpmyadmin好了,反正就是htdocs下建立的站点

9、打开zend studio,project->new project建立项目.在左侧项目区里空白处右键"add to project..."将待调试的项目文件夹加进来

10、在IDE的主窗口点击Broswer,输入本地网址,比如http://localhost/phpmyadmin/,打开页之后,左上角有条的调试虫子在,点击下拉选择"current page",调试本页,点击虫子之后,如无意外会跳到当前页对应的php文件

11、ok,可以开始调试旅程了,单步执行(step into, step out), 断点(breakpoint),监视(watch),运行时变量( variables),调用堆栈(stack)都如eclipse等多数IDE一样放在那里,用吧

去zend下载需要注册一下,不过不用邮件确认,zend的几个产品似乎都有使用时间限制,到了再想办法解决

我尽量使用文字说清楚,因为搜"zend php调试"看到最多的那篇文章10来张都是破图,这里也仅附图一张

http://www.phpweblog.net/young40/archive/2007/11/21/2365.html

通常来说,类和对象(类的实例)之间是一对多的关系。但是某些情况下,我们只
需要一个类的一个实例。比如多个实例的多样性反倒会带来一些不可控因素,多
次的实例化,是一种资源的浪费,降低了效率;又如他们是工厂对象(factory
object),用来创建系统中的其他对象,等等。这时候,较好的处理方式就是让类
的实例具有单一性:保障这个类在运行过程中最多生成一个实例( Singleton 模
式),或者让所有的实例保持一致( Monostate 模式)。

PHP 下实现 Singleton 模式示例:

 




<?php
  
class Singleton
  {
      
private static $instance;
 
      
private function __construct()
      {
      }
 
      
public static function instance()
      {
          
if

【PDO配置】
1、确保PHP版本为5.2.5以上(主要是我用的5.2.5,第一次不知道用的5.1.x的,结果一直搞不好~_~)
2、在php.ini中找到Dynamic Extensions扩展部分,去掉extension=php_pdo.dll前面的分号
3、去掉相应数据库PDO扩展前面的分号,如:extension=php_pdo_mysql.dll

【范例中数据库】
CREATE TABLE tablename (
    id mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
    str varchar(50) NOT NULL DEFAULT '''',
    PRIMARY KEY (id)
);

【程序范例】
<?php
/*
*        数据库配置信息
*/
$dsn = "mysql:host=localhost;dbname=test";
$user = ''root'';
$passwd = ''123456'';

/*
*        链接数据库,并测试是否链接成功
*/
try{
        $db = new PDO($dsn, $user, $passwd);
}catch (PDOException $e)
{
        echo "链接数据库失败!";
        print "异常信息: ". $e->getMessage() . "<br/>";
        print "异常文件: " . $e->getFile() . "<br/>";
        print "异常行号: " . $e->getLine() . "<br/>";
        exit();
}

/*
*        插入
*/
//$sql = "INSERT INTO tablename SET str = ''Hello''";
//$count = $db->exec($sql); //返回值为影响的行数

/*
*        删除
*/
//$sql = "DELETE FROM tablename WHERE str = ''Hello'' LIMIT 1";
//$count = $db->exec($sql); //返回值为影响的行数

/*
*        查询
*/
//预处理需要查询的SQL语句
//$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL); //列名按照原始的方式(字段)
$sql = "SELECT * FROM tablename WHERE id < :id AND str = :string"; //sql语句(参数绑定方式)
$query = $db->prepare($sql); //预处理

//用一组绑定参数执行一遍查询
$query->execute(array('':id''=>1, '':string''=>''Hello'')); //处理语句(参数绑定方式)
//$query->setFetchMode(PDO::FETCH_ASSOC); 关联数组形式(只通过字段名下标访问数组内容)
while($item =


PHP5盗链函数(referfile)
作者:axgle

功能:任何以‘HTTP_REFERER’为主要特征的防盗链技术将通通失效,顷刻间便灰飞烟灭。

<?php
/**
@title:PHP5盗链函数
@author:axgle
@filename:referer.php
@contents:This is a demo that show referer made success
*/

if($_GET[''id'']) {
        echo $_SERVER[''HTTP_REFERER''];
} else {
        echo referfile(''http://localhost/referer.php?id=1'',''http://axgle.is.good/'');
      
}

function referfile($url,$refer='''') {
        $opt=array(''http''=>array(''header''=>"Referer:$refer"));
        $context=stream_context_create($opt);
        return file_get_contents($url,false,$context);
}

?>

我程序里要用到PHP连接到MYSQL,所以先要将已经复制到c:windows 下的 php.ini 中看看。

将 extension=php_mysql.dll 前面的 ; 分号给去掉.

phpexe php_mysql.dll  的文件, 也复制到 c:windows, 或者是 path 路径中已经设置好的地方。

然后。可以用下面的一段代码来测试下,是否正常连接了。

  本机环境: mysql-4.1.22-win32

MYSQL : root 口令123

数据库:deepthroat

能正常显示了,那就OK



<?php
// 连接,选择数据库
$link = mysql_connect(''localhost'', ''root'', ''123'')
    or 
die(''Could not connect: '' . mysql_error());
echo ''Connected successfully'';
mysql_select_db(''deepthroat'') or die(''Could not select database'');

// 执行 SQL 查询
$query = ''SELECT * FROM dt_menu'';
$result = mysql_query($query) or die(''Query failed: '' . mysql_error());

// 用 HTML 显示结果
echo "<table> ";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    
echo " <tr> ";
    
foreach ($line as $col_value) {
        
echo " <td>$col_value</td> ";
    }
    
echo " </tr> ";
}
echo "</table> ";

// 释放结果集
mysql_free_result($result);

// 关闭连接
mysql_close($link);
?> 


<
[!--infotagslink--]

相关文章

  • Windows VPN服务器配置图文教程 超详细版

    VPN可以虚拟出一个专用网络,让远处的计算机和你相当于处在同一个局域网中,而中间的数据也可以实现加密传输,用处很大,特别是在一些大公司,分公司处在不同的区域。...2016-01-27
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • Windows批量搜索并复制/剪切文件的批处理程序实例

    这篇文章主要介绍了Windows批量搜索并复制/剪切文件的批处理程序实例,需要的朋友可以参考下...2020-06-30
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • C#创建简单windows窗体应用(加法器)

    这篇文章主要为大家详细介绍了C#创建一个简单windows窗体应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08