??xml version="1.0" encoding="utf-8" standalone="yes"?>久草视频在线看,五月天国产精品,亚洲国产精品ⅴa在线观看http://www.aygfsteel.com/wangxinsh55/category/40298.htmlzh-cnMon, 22 Jun 2009 09:21:05 GMTMon, 22 Jun 2009 09:21:05 GMT60PHP E序员的调试技?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2009/06/22/283615.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 22 Jun 2009 09:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2009/06/22/283615.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/283615.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2009/06/22/283615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/283615.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/283615.html</trackback:ping><description><![CDATA[<table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr valign="top"> <td width="100%"> <p id="subtitle"><em>转自Q?/em>http://www.ibm.com/developerworks/cn/opensource/os-debug/</p> <p id="subtitle"><em>使用 print 语句、错误报告和 PHPEclipse 插g</em></p> <img alt="" src="http://www.ibm.com/i/c.gif" class="display-img" width="1" height="6" /></td> <td width="192"><img alt="developerWorks" src="http://www.ibm.com/developerworks/i/dw.gif" width="192" height="18" /></td> </tr> </tbody> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr valign="top"> <td width="10"><img alt="" src="http://www.ibm.com/i/c.gif" width="10" height="1" /></td> <td width="100%"> <table align="right" border="0" cellpadding="0" cellspacing="0" width="160"> <tbody> <tr> <td width="10"><img alt="" src="http://www.ibm.com/i/c.gif" width="10" height="1" /></td> <td> <table border="0" cellpadding="0" cellspacing="0" width="150"> <tbody> <tr> <td>文档选项</td> </tr> </tbody> </table> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td width="150"><noscript> <tr valign="top"> <td width="8"><img alt="" height="1" width="8" src="http://www.ibm.com/i/c.gif"/ /></td> <td width="16"><img alt="" width="16" height="16" src="http://www.ibm.com/i/c.gif"/ /></td> <td> <p><span>未显C需?JavaScript 的文档选项</span></p> </td> </tr> </noscript> <table border="0" cellpadding="0" cellspacing="0" width="143"> <script language="JavaScript" type="text/javascript"> <!-- document.write(' <tr valign="top"> <td width="8"><img src="http://www.ibm.com/i/c.gif" width="8" height="1" alt=""/ /></td> <td width="16"><img alt="打印机的版面设|成横向打印模式" height="16" src="http://www.ibm.com/i/v14/icons/printer.gif" width="16" vspace="3" /></td> <td width="122"> <p><strong><a href="javascript:print()">打印本页</a></strong></p> </td> </tr> '); //--> </script> <tbody> <tr valign="top"> <td width="8"><img src="http://www.ibm.com/i/c.gif" alt="" width="8" height="1" /></td> <td width="16"><img alt="打印机的版面设|成横向打印模式" src="http://www.ibm.com/i/v14/icons/printer.gif" vspace="3" width="16" height="16" /></td> <td width="122"> <p><strong><a href="javascript:print()">打印本页</a></strong></p> </td> </tr> <input value="本文介绍调试 PHP 应用E序的各U方法,包括?Apache and PHP 中打开错误报告Q以及通过在一个简单的 PHP 脚本中放|策略性的 print 语句Q找到更困难?bug 的源头。还会介l用?Eclipse ?PHPEclipse 插gQ这是一个灵zȝ开发环境,h实时语法解析能力Q还会介l?PHPEclipse ?DBG 调试器扩展? name="body" type="hidden" /><input value="PHP E序员的调试技? name="subject" type="hidden" /><input value="cn" name="lang" type="hidden" /> <script language="JavaScript" type="text/javascript"> <!-- document.write(' <tr valign="top"> <td width="8"><img src="http://www.ibm.com/i/c.gif" width="8" height="1" alt=""/ /></td> <td width="16"><img src="http://www.ibm.com/i/v14/icons/em.gif" height="16" width="16" vspace="3" alt="此作为电子邮件发? /></td> <td width="122"> <p><a href="javascript:document.email.submit();"><strong>此作为电子邮件发?/strong></a></p> </td> </tr> '); //--> </script> <tr valign="top"> <td width="8"><img src="http://www.ibm.com/i/c.gif" alt="" width="8" height="1" /></td> <td width="16"><img src="http://www.ibm.com/i/v14/icons/em.gif" alt="此作为电子邮件发? vspace="3" width="16" height="16" /></td> <td width="122"> <p><a href="javascript:document.email.submit();"><strong>此作为电子邮件发?/strong></a></p> </td> </tr> <tr valign="top"> <td width="8"><img alt="" src="http://www.ibm.com/i/c.gif" width="8" height="1" /></td> <td width="16"><img alt="" src="http://www.ibm.com/i/v14/icons/dn.gif" border="0" vspace="3" width="16" height="16" /></td> <td width="122"> <p><a class="smallplainlink"><strong>样例代码</strong></a></p> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> </td> </tr> </tbody> </table> <p>U别Q?中</p> <p><a >Tyler Anderson</a> (<a href="mailto:tyleranderson5@yahoo.com?subject=PHP%20%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E8%B0%83%E8%AF%95%E6%8A%80%E6%9C%AF&amp;cc=troy@backstopmedia.com">tyleranderson5@yahoo.com</a>), 自由作?br /> </p> <p>2006 q? 1 ? 23 ?/p> <blockquote>? 文介l调?PHP 应用E序的各U方法,包括?Apache and PHP 中打开错误报告Q以及通过在一个简单的 PHP 脚本中放|策略性的 print 语句Q找到更困难?bug 的源头。还会介l用?Eclipse ?PHPEclipse 插gQ这是一个灵zȝ开发环境,h实时语法解析能力Q还会介l?PHPEclipse ?DBG 调试器扩展?/blockquote> <p><a name="N1004B">?/a></p> <p>有许?PHP 调试技术可以在~码的时候节U大量时间。一个有效却很基本的调试技术就是打开错误报告。另一个略微高U一点的技术包括? print 语句Q通过昄在屏q上实际出现的内容,有助于精地扑և更难发现?bug。PHPEclipse 是一?Eclipse 插gQ能够强调常见的语法错误Q可以与调试器结合v来用于设|断炏V?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="setup">讄</a></p> <p>要学习本文描q的概念Q需?PHP、Web 服务器和 Eclipse。调试器扩展支持?PHP 版本?V5.0.3?</p> <p>我们需要一?Web 服务器来解析?PHP 创徏的页面ƈ把它们显C到览器。本文中使用的是 Apache2。但是,M Web 服务器都可以满要求?</p> <p>要利用本文中介绍的一些调试技术,需要安?Eclipse V3.1.1 和插?PHPEclipse V1.1.8。由?Eclipse 要求 Java™ 技术,所以还要下载它?</p> <p>q需?PHP 的调试器扩展模块。安装它略有些麻烦。请仔细跟随安装调试器扩展的操作说明。现在,先在 php.ini 文g中注释掉那些要求装入和配|?PHP 扩展的行。在需要用调试器的时候,再取消注释?/p> <p>请参?<a >参考资?/a> 获得下蝲信息。现在介l出错消息?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N1006D">出错消息</a></p> <p>出错消息是作为开发h员的W一道防Uѝ谁都不惛_一台没有配|成昄出错消息的服务器上用 PHP 开发代码。但是,误住,当代码调试完成,准备q行的时候,应当保关闭了错误报告,因ؓ不希望站点的讉K者看到出错消息,因ؓq会l他们提供够的信息 来利用站点的qq掉站炏V?/p> <p>也可以用出错消息己服务,因ؓ它们会显C抛出或生成错误的正代码行。这P调试变成在览器上查看生成的错误所昄的行Pq在代码中检? q一行。稍后,会看到 PHPEclipse 插g通过x地给语法错误加下划线q在保存文g时用U色 “x” 标注语法错误Q可在开发和调试q程中提供极大的帮助?/p> <p>先来看如何在 php.ini 文g中开启错误报告ƈ讄错误报告的别。然后将学习如何?Apache 的配|文件中覆盖q些讄?/p> <p><a name="N1007C">PHP 的错误报?/a></p> <p>php.ini 文g中有许多配置讄。您应当已经讄好自q php.ini 文gq把它放在合适的目录中,像?Linux 上安?PHP ?Apache 2 的文档说明中所C的那样Q请参阅 <a >参考资?/a>Q。在调试 PHP 应用E序Ӟ应当知道两个配置变量。下面是q两个变量及光认|</p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>display_errors = Off<br /> error_reporting = E_ALL<br /> </pre> </td> </tr> </tbody> </table> <br /> <p>通过?php.ini 文g中搜索它们,可以发现q两个变量当前的默认倹{?code>display_errors</code> 变量的目的很明显 —?它告?PHP 是否昄错误。默认值是 <code>Off</code>。但是,要让开发过E更加轻松,hq个D?<code>On</code>Q?/p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>display_errors = On<br /> </pre> </td> </tr> </tbody> </table> <br /> <p><code>error_reporting</code> 变量的默认值是 <code>E_ALL</code>。这个设|会昄从不良编码实践到无害提示到出错的所有信息?code>E_ALL</code> 对于开发过E来说有点太l,因ؓ它在屏幕上ؓ一些小事(例如变量未初始化Q也昄提示Q会搞糟览器的输出。我只想看到错误和不良编码实践,但是不想看到无害的提C。所以,L以下g?<code>error_reporting</code> 的默认|</p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>error_reporting = E_ALL & ~E_NOTICE<br /> </pre> </td> </tr> </tbody> </table> <br /> <p>重新启动 ApacheQ就全部讄好了。接下来Q将学习如何?Apache 上做同样的事?/p> <p><a name="N100BC">服务器上的错误报?/a></p> <p>依赖?Apache 正在做的工作Q在 PHP 中打开错误报告可能没法工作Q因为在计算Z可能有多?PHP 版本。有时很隑֌? Apache 正在使用哪个 PHP 版本Q因?Apache 只能查看一?php.ini 文g。不知道 Apache 正在使用哪个 php.ini 文g配置自己是一个安全问题。但是,有一U方法可以在 Apache 中配|?PHP 变量Q从而保证设|了正确的出错别?/p> <p>而且Q最好知道如何在服务器端讄q些配置变量Q以否决或抢?php.ini 文gQ从而提供更高别的安全性?/p> <p>在配|?Apache Ӟ应该已经接触q?<apache2-install-dir>/conf/httpd.conf ?http.conf 文g中的基本配置?/p> <p>要做?php.ini 文g中已l做q的事,h下列各行d?httpd.confQ覆盖Q?php.ini 文gQ?/p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>php_flag display_errors on<br /> php_value error_reporting 2039<br /> </pre> </td> </tr> </tbody> </table> <br /> <p>q会覆盖?php.ini 文g中ؓ <code>display_errors</code> 已经讄的标志,以及 <code>error_reporting</code> 的倹{?<code>2039</code> 代表 <code>E_ALL & ~E_NOTICE</code>。如果愿意采?<code>E_ALL</code>Q请把D?<code>2047</code>。同Pq是要重?Apache?/p> <p>接下来,要在服务器上试错误报告?/p> <p><a name="N100F1">试错误报告</a></p> <p>如果启动了错误报告,会节U许多时间。PHP 中的错误会指向代码中的错误。请创徏一个简单的 PHP 文g test.phpQƈ像清?1 所CZ样定义它?/p> <br /> <a name="N100FE"><strong>清单 1. 一个生成错误的?PHP</strong></a><br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><?php<br /> print("The next line generates an error.<br>");<br /> printaline("PLEASE?");<br /> print("This will not be displayed due to the above error.");<br /> ?><br /> </pre> </td> </tr> </tbody> </table> <br /> <p>W一?<code>print()</code> 语句会向 Web 览器显C它的内宏V但是第二个语句会生成错误ƈ?Web 面上显C。这造成最后一?<code>print()</code> 语句不v作用Q如?1 所C?/p> <br /> <a name="N10111"><strong>?1. 生成错误</strong></a><br /> <img alt="生成错误" src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig01.jpg" width="572" height="271" /> <br /> <p>现在开启了错误报告Q接下来Q用 print 语句帮助调试应用E序?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N10120">介绍 print 语句</a></p> <p>因ؓ应用E序中的功能?bug 不会产生错误Q所以在所有调试策略中Q关于如何正地攄和?<code>print</code> ?<code>die</code> 语句来调?PHP 应用E序的知识是一U很好的资。可以用 <code>print</code> 语句在代码中~小寚w题语句的定位Q这些语句在语法上没有错误,也不?bugQ但是从代码的功能上看是 bug。这些是最隑֏现和调试?bugQ因为它们不会抛出错误。惟一知道的就是在览器上昄的内容不是想要的内容Q或者想要保存在数据库中的内Ҏ本没有保存?/p> <p>假设正在处理通过 <code>GET</code> h发送过来的表单数据Q想向浏览器昄信息Q但是出于某U原因,数据没有正确地提交,或者不能正地?<code>GET</code> h中读出。要调试q类问题Q重要的是用 <code>print()</code> ?<code>die()</code> 语句知道变量的值是什么?/p> <p><code>die()</code> 语句会中止程序执行,q在 Web 览器上昄文本。如果不x释掉代码Q而且只想昄到出错之前的信息和出错信息,不想昄后面的信息,那么 <code>die()</code> 语句特别有用?/p> <p>让我们在 PHP 中用 print 语句来测试这个概?/p> <p><a name="N10155">使用 print 语句q行调试</a></p> <p>在我作程序员的那些时候,当我?Linux® 上开发应用程序时Q没有方便的 GUI 可以告诉?bug 在哪Q我q速地发现我在E序中放? print 语句多Q我在应用程序中?bug 的范围羃到一行的Z大。请创徏另一?PHP 文g test2.phpQƈ像清?2 所C的那样定义它?/p> <br /> <a name="N10162"><strong>清单 2. 昄通过 GET 提交的所有变?/strong></a><br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><?php<br /> $j = "";<br /> print("Lets retrieve all the variables submitted to this ");<br /> print("script via a GET request:<br>");<br /> foreach($_GET as $key => $i){<br /> print("$key=$j<br>");<br /> }<br /> if($_GET['Submit'] == "Send GET Request")<br /> $j = "done!<br>";<br /> ?><br /> <form method="GET"><br /> Name: <input name="name"><br><br /> Email: <input name="email" size="25"><br><br /> <input name="Submit" type="submit" value="Send GET Request"><br /> </form><br /> </pre> </td> </tr> </tbody> </table> <br /> <p>您可能会非常Ҏ地发现清?2 中的 bugQ您很棒Q但h意这是一个非常简单的脚本Q只是作Z?print 语句q行调试而展C的一个例子而已。这个脚本只是提?<code>GET</code> h中的所有变量,如果有,把它们昄在浏览器上。还提供了一个表单,?<code>GET</code> h向服务器发送变量以q行试。请看输出,如图 2 所C?/p> <br /> <a name="N10175"><strong>?2. test2.php 的输?/strong></a><br /> <img alt="test2.php 的输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig02.jpg" width="572" height="264" /> <br /> <p>现在单击 <strong>Send GET Request</strong> 按钮Q请注意只有 <code>$_GET</code> h的键昄在浏览器上,而正的值都没显C。可以在循环中放一?print 语句Q检验在 <code>foreach</code> 循环中每个元素中是否实存在数据。请参阅清单 3?/p> <br /> <a name="N10193"><strong>清单 3. ?print 语句验证代码的功?/strong></a><br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>...<br /> foreach($_GET as $key => $i){<br /> print("Correct data? " . $_GET[$key] . "<br>");<br /> print("$key=$j<br>");<br /> }<br /> ...<br /> </pre> </td> </tr> </tbody> </table> <br /> <p>放进ȝ print 语句是粗体。注意,现在已经知道?Web 览器上昄?<code>$key</code> 值是正确的,但是׃某些原因Q值没有正地昄。请看新的输出,如图 3 所C?/p> <br /> <a name="N101A5"><strong>?3. 修改后的 test2.php 的输?/strong></a><br /> <img alt="修改后的 test2.php 的输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig03.jpg" width="572" height="305" /> <br /> <p>现在已经知道应用E序正确C <code>GET</code> h接收C变量Q那么肯定是在代码中?bug。查看之后注意到Q用来显C值的变量 <code>$j</code> 是错误的。在 <code>foreach</code> 语句中指定的?<code>$i</code>Q所以它肯定会有正确的|但是无意之中输入?<code>$j</code>。所以通过?<code>$j</code> 替换?<code>$i</code>Q迅速地修正了错误,重新载入面之后Q就看到了正的输出Q如?4 所C?/p> <br /> <a name="N101D2"><strong>?4. 修正后的 test2.php 的输?/strong></a><br /> <img alt="修正后的 test2.php 的输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig04.jpg" width="572" height="310" /> <br /> <p>现在可以删除或注释掉刚才d?print 语句了,因ؓ已经发现了代码中? bug。注意,q只是在调试应用E序时可能遇到的许多错误中的一个很的子集。对于用数据库时可能遇到的问题Q一个好的解x案是输出 SQL 语句Q以保执行?SQL 是惌执行的?/p> <p>现在要来看看如何使用 Eclipse IDE ?PHPEclipse 插g及调试器扩展q一步在调试历程中提供帮助?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N101E4">使用 PHPEclipse</a></p> <p>您可能用q?EclipseQ但是可能不熟悉它。请参阅 <a >参考资?/a> 获得 Eclipse q_的介l?/p> <p>用于 Eclipse ?PHPEclipse 插g是用来开?PHP 应用E序的一个流行工兗请启动 Eclipse q把工作区目录指定ؓ Apache ?www 目录Q在我的机器上是 c:"wwwQ。现在单?<strong>File > New > Project</strong>。会弹出 New Project 向导。双?PHP 文g夹ƈ选择 PHP Project。单?<strong>Next</strong>Q输入项目名U?debugArticleQƈ单击 <strong>Finish</strong>?/p> <p>如果?Web 服务器设|ؓ在端?80 上侦听,那么不需要做M修改。否则,误{?Navigator H口Q在 PHP 目 <strong>debugArticle</strong> 上右击,选择 PropertiesQ然后单?<strong>PHP Project Settings</strong>。单?<strong>Configure Workspace Settings</strong> 然后修改合适的 localhost 或者添?Web 服务器侦听的端口Q例?http://localhost:8080Q。单?<strong>Apply</strong> 完成讄?/p> <p>Navigator H口应当昄目和一?.project 文g。在目上右击,像前面做的那样Q只是这ơ选择 <strong>New > PHP File</strong>。用惌创徏?PHP 文g的名U?test3.php 替换 *.phpQ然后单?<strong>Finish</strong>。在 Eclipse IDE 中应当出C个新文g。可能需要导航到H口底部?PHP 览器来查看 PHP 文g的当前输出(参见?5Q?/p> <br /> <a name="N10217"><strong>?5. Eclipse ?PHPEclipse 插g</strong></a><br /> <img alt="Eclipse ?PHPEclipse 插g" src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig05.jpg" width="572" height="322" /> <br /> <p>注意Q只?Windows® 的用户可以像清单 5 所C的那样使用 PHP 览器。通过打开独立览器窗口ƈ把浏览器指向试脚本所在目录,也可以用同L功能?/p> <p>现在来演C个应用程序,证明它的强大能力?/p> <p>?“使用调试?#8221; 一节中Q将学习如何?Eclipse、PHPEclipse 和前面下载的调试?PHP 扩展来调?PHP 应用E序。先从学习如何用它的语法解析功能开始?/p> <p><a name="N1022C">语法解析和加下划U?/a></p> <p>先从查看 PHPEclipse 如何提供帮助调试 PHP 应用E序的实时语法解析功能开始。要看这个特性的实际应用Q先从在 Eclipse 中定?test3.php 开始,如下所C?/p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><?php<br /> print(,"Hello World!");<br /> ?><br /> </pre> </td> </tr> </tbody> </table> <br /> <p>注意Q在清单 4 中加下划U的两个字符?Eclipse 中加了下划线Q提C法不正确。按 <strong>Ctrl+S</strong> 保存文gQ会?Eclipse 中显C析错误:在代码中与解析错误对应的行上会加上红 “x”Q如?6 所C?/p> <br /> <a name="N10242"><strong>?6. 语法错误</strong></a><br /> <img alt="语法错误" src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig06.jpg" width="572" height="322" /> <br /> <p>现在演示 PHP 览器。这个窗口提供了当前 PHP 脚本的预览,如图 6 所C?/p> <p>从上面定义的 test3.php 中删除逗号Q?code>,</code>Q。按 <strong>Ctrl+S</strong> 保存文gQ然后观?PHP 览器窗口的更新Q显CZ Hello WorldQ参见图 7Q?/p> <br /> <a name="N1025D"><strong>?7. ?PHPEclipse 中预?PHP 脚本</strong></a><br /> <img alt="?PHPEclipse 中预?PHP 脚本" src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig07.jpg" width="572" height="322" /> <br /> <p>下面是用调试器在 PHP 中设|断炏V?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N1026C">使用调试?/a></p> <p>使用调试器,可以讄断点q查?PHP 代码到所设断点之前的览器输出。然后可以l代码的执行q查看到下一断点之前的浏览器输出Q然后再C一个,直到 PHP 脚本完成?/p> <p>现在?“讄” 一节中?php.ini 中注释掉的行取消注释Qƈ重新启动 Apache。现在装入了调试器,Eclipse 能够和它挂上了?/p> <p>现在?Eclipse 中设计调试环境。请创徏新的 test4.php 文gQ先保持为空。现在单?<strong>Run > Debug</strong>。在左侧面板中选择 PHP DBG ScriptQƈ单击 <strong>New</strong>。现在{?<strong>File</strong> 选项卡,输入当前目 <strong>debugArticle</strong> 以及惌调试的文?<strong>test4.php</strong>。现在{?<strong>Environment</strong> 选项卡,然后再到 <strong>Interpreter</strong> 子选项卡。在 PHP 的安装目录中扑ֈ php.exe 文gQ我的是 c:"apps"php5.0.3"php.exeQ。现在单?<strong>Remote Debug</strong> 子选项卡,选择 <strong>Remote Debug</strong>Q? 如果没有使用 WindowsQ请取消 “Open with DBGSession URL in internal browser box” 复选框。把 Remote Source 路径讄成与要测试的 PHP 脚本的绝对\径(不是 Web 路径Q相同(我的讄? c:"www"debugArticle"test4.phpQ? 现在单击 <strong>Debug</strong>?/p> <p>现在应当装入 Debug 透视图,如图 8 所C。否则,请单?<strong>Window > Open Perspective > Other</strong>Qƈ选择 <strong>Debug</strong>?/p> <br /> <a name="N102A4"><strong>?8. Eclipse 中的 Debug 透视?/strong></a><br /> <img alt="Eclipse 中的 Debug 透视? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig08.jpg" width="600" height="530" /> <br /> <p>现在可以讄断点了?/p> <p>对于本文中用的插g和扩展的版本Q断点功能是必需的,因ؓ PHP 在把输出发送到览器之前会~冲它。除此之外,需要做的不仅仅是设|一个断Ҏ当前昄数据h?Web 览器,所以要像下面和?8 所C那样定?test4.php?/p> <br /> <a name="N102BA"><strong>清单 4. 讄和创建断?/strong></a><br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><?php<br /> function break-point(){<br /> ob_flush();<br /> flush();<br /> sleep(.1);<br /> debugBreak();<br /> }<br /> print("This will get shown first, ");<br /> print("as will this<br>");<br /> breakpoint();<br /> print("This won't get shown until after ");<br /> print("continuing the break-point<br>");<br /> breakpoint();<br /> print("END!");<br /> ?<br /> </pre> </td> </tr> </tbody> </table> <br /> <p><code>breakpoint()</code> 函数会把~冲的输出和其他~冲的数据刷新到 Web 览器。对 <code>sleep(.1)</code> 的调用是必需的,q样代码中止?<code>debugBreak()</code> 之前Q服务器才有_的时间把数据h?Web 览器,q个函数是前面下载的 PHP 调试器扩展的内部函数。这P调用 <code>breakpoint()</code> 会把 HTML 块?code>print()</code> ?<code>echo()</code> 语句的数据刷新到览器,然后中止代码执行?/p> <p>在像清单 4 那样~写完代码之后,可以打开览器ƈ指向 test4.phpQ或者可以查?PHP 览器窗口(我的? http://localhost/debugArticle/test4.phpQ。每ơ输入和保存文gӞ?PHP 览器窗口中已l启动了调试序列。如果不使用 WindowsQ请通过览器查?test4.php。在保存了文件之后,?<strong>F8</strong> 或单?<strong>Run > Resume</strong> l箋代码执行。持l这么做Q直到最后一行输出是 <code>END!</code> 为止Q参见图 9?0 ?11Q?/p> <br /> <a name="N102E9"><strong>?9. 初始的到W一个断点的 PHP 览器输?/strong></a><br /> <img alt="初始的到W一个断点的 PHP 览器输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig09.jpg" width="572" height="538" /> <br /> <p>h意图 9 中的 Debug H口如何把执行显CZؓ挂v的?/p> <br /> <a name="N102FA"><strong>?10. W一个断点之后到W二个断点之前的 PHP 览器输?/strong></a><br /> <img alt="W一个断点之后到W二个断点之前的 PHP 览器输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig10.jpg" width="600" height="564" /> <br /> <p>?10 ?Debug H口仍然把执行显CZؓ挂vQ而第二组数据昄?PHP 览器中?/p> <br /> <a name="N1030B"><strong>?11. 完整?PHP 览器输?/strong></a><br /> <img alt="完整?PHP 览器输? src="http://www.ibm.com/developerworks/cn/opensource/os-debug/fig11.jpg" width="572" height="538" /> <br /> <p>注意Q图 11 ?Debug H口中的代码不再挂vQ整个脚本已l执行,如图 11 中的 PHP 览器所C?/p> <p>既然已经看到了用 PHPEclipse 和调试器扩展q行开发的优势Q那么很难想像没有它会怎么栗?/p> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N1031D">l束?/a></p> <p>现在已经?PHP 的调试技术集中添加了错误报告的运用、print 语句、PHPEclipse 和调试器扩展Q您可以通过减少每行代码的错误数量,成ؓ更有效的 PHP ~码人员。请参阅 <a >参考资?/a> 获得一?PHP 教程Q可以在上面试q些新技能?/p> <br /> <br /> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /><br /> <img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="8" height="6" /></td> </tr> </tbody> </table> <table align="right" cellpadding="0" cellspacing="0"> <tbody> <tr align="right"> <td><img src="http://www.ibm.com/i/c.gif" alt="" width="100%" height="4" /><br /> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" border="0" width="16" height="16" /><br /> </td> <td align="right" valign="top"><a class="fbox"><strong>回页?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="download">下蝲</a></p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <th scope="col">描述</th><th scope="col">名字</th><th scope="col">大小</th><th scope="col">下蝲Ҏ</th> </tr> <tr> <th scope="row">Sample code for PHP Debugging</th> <td nowrap="nowrap">os-debugsource.zip</td> <td nowrap="nowrap">12KB</td> <td nowrap="nowrap"><a ><strong>HTTP</strong></a></td> </tr> </tbody> </table> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr valign="top"> <td colspan="5"><img alt="" src="http://www.ibm.com/i/c.gif" border="0" width="12" height="12" /></td> </tr> <tr> <td><img alt="" src="http://www.ibm.com/i/v14/icons/fw.gif" width="16" height="16" /></td> <td><a >关于下蝲Ҏ的信?/a></td> <td><img alt="" src="http://www.ibm.com/i/c.gif" width="50" height="1" /></td> </tr> </tbody> </table> <br /> <br /> <p><a name="resources">参考资?</a></p> <strong>学习</strong><br /> <ul> <li>您可以参阅本文在 developerWorks 全球站点上的 <a target="_blank">英文原文</a>?br /> <br /> </li> <li> 学习如何在基?Windows ?UNIX® 的系l上 <a >安装 Java</a>?br /> <br /> </li> <li> 误?<a >Eclipse.org</a> 获得~程和如何用它的全面信息?br /> <br /> </li> <li> “<a >Eclipse q_入门</a>”QdeveloperWorksQ?002 q?11 月)提供?Eclipse 的历史和概述Q包括如何安?Eclipse 和插件的l节?br /> <br /> </li> <li> 误?<a >PHPEclipse</a> 学习关于安装 PHPEclipse 和如何用它的更多内宏V?br /> <br /> </li> <li> DBG 是一个全功能?PHP 调试器引擎,一个交互的工具Q有助于调试 PHP 脚本。请阅读 <a >Installing and configuring the debugger</a> 上的q䆾教程?br /> <br /> </li> <li> 要学习关?Eclipse 的更多内容,误?developerWorks ?<a >Eclipse project resources</a>?br /> <br /> </li> <li> 要学习关?PHP 的更多内容,误?developerWorks ?<a >PHP project resources</a>?br /> <br /> </li> <li> 请参?PHP 手册获得更多关于 <a >error reporting</a> 的内宏V?br /> <br /> </li> <li> 请阅d?<a >PHP and Apache2 on Linux</a> 的操作说明?br /> <br /> </li> <li> 请阅d?<a >PHP and Apache2 on Windows</a> 的操作说明?br /> <br /> </li> <li> 要获得一pd学习 PHP ~程?developerWorks 教程Q请参阅 “<a >学习 PHPQ第 1 部分</a>”?a >学习 PHPQ第 2 部分</a> ?<a >学习 PHPQ第 3 部分</a>?br /> <br /> </li> <li> 请密切关?<a >developerWorks technical events and webcasts</a>?br /> <br /> </li> <li> 误?developerWorks <a >开放源码专?/a> 获得丰富?how-to 信息、工具和目更新Q有助于用开放源码技术进行开发ƈ把它们用?IBM 的品?br /> <br /> </li> </ul> <br /> <strong>获得产品和技?/strong><br /> <ul> <li> 请从 PHP.net 下蝲最新版本的 <a >PHP</a>?br /> <br /> </li> <li> 请下载最新版本的 <a >Apache 2</a>?br /> <br /> </li> <li> 请从 Sun 公司下蝲 <a >Java 技?/a>?br /> <br /> </li> <li> 请从 Eclipse.org 下蝲最新版本的 <a >Eclipse</a>?br /> <br /> </li> <li> 请从 Sourceforge 下蝲 <a >PHPEclipse</a>。把 Eclipse 解压?eclipse-install-dirQ然后把 PHPEclipse 解压?eclipse-install-dir。在安装扩展Ӟ要按?<a >PHPEclipse instructions</a>。但是,在要求在 php.ini 文g中装入和配置 PHP 扩展的地Ҏ释掉那些行。在准备使用调试器时再取消这些行的注释?br /> <br /> </li> <li> <a >订购免费?SEK for Linux</a>Q这?DVDQ两张)Q包含了来自 DB2®、Lotus®?Rational®、Tivoli® ?WebSphere® 的用?Linux 的最?IBM 试用软g?br /> <br /> </li> <li> L <a >IBM 试用软g</a> 攚w您的下一个开放源码开发项目,可以下蝲也可以通过 DVD 得到?br /> <br /> </li> </ul> <br /> <strong>讨论</strong><br /> <ul> <li> 通过参与 <a >developerWorks blogs</a> 加入 developerWorks C֌?/li> </ul> <br /> <br /> <p><a name="author">关于作?/a></p> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td colspan="3"><img alt="" src="http://www.ibm.com/i/c.gif" width="100%" height="5" /></td> </tr> <tr align="left" valign="top"> <td><br /> </td> <td><img alt="" src="http://www.ibm.com/i/c.gif" width="4" height="5" /></td> <td width="100%"> <p>Tyler Anderson 2004 q从 Brigham Young 大学毕业Q获得计机U学学位。现在是他作机工程士生的最后一学期。过去,他作为数据库E序员ؓ DPMG.com 工作Q现在他是位? Beaverton, Ore ?Stexar 公司的工E师?/p> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/283615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2009-06-22 17:09 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2009/06/22/283615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NUPHP5安装教程 分nhttp://www.aygfsteel.com/wangxinsh55/archive/2009/06/16/282639.htmlSIMONESIMONETue, 16 Jun 2009 09:08:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2009/06/16/282639.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/282639.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2009/06/16/282639.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/282639.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/282639.htmlNUPHP5安装教程

1,要下?个php的安装包:一个是install版本的,另一个是zip版本??br /> 2,q行install版本Q按照标准模式安装就可以了,安装q程中注意正选择你的iIS版本?br /> 2000server 选iis4或更高版?,2003server选择iis 6.
兌.php,.phtml.php3{文件类型。这里设定d:/php作ؓ安装目录
3,别着?现在q不能马上用.把zip版的解压~,到d:/php5zip/文g夹下面,copy目录下所有的文g和目录,然后_脓到d:/phpQ覆盖下面的所有文?
4,C:/PHP /ext下面的dll扩展文g复制到c:/windows/system32下面Q?lguests用户l?我的机器?每个站点讄了用不同的匿名用 ?q些用户都属于guestsl?如果你只有一个ISUR_你的机器?则只需要设|ISUR_你的机器名的权限)q些关于PHP5的dll文gd? q行的权限?br /> 5,*lguests用户lphp.exeQphp-cgi.exeQphp5isapi.dlld和运行的权限?br /> 6,*讄c:/windows/php.ini 或?c:/winnt/php.ini为guests用户l可以:d.
7,最后,别忘记在IIS里面l站点属?-〉文档里增加index.php或者default.php
8,MySQL的启用:
需要去掉c:/windows/php.ini 或?c:/winnt/php.ini里面关于php_mysqli.dll扩展的注?br /> 另外增加extension=php_mysql.dll
9,好了,如果要增加图形或其他功能,修改php.ini 里面的extension,q且把相关的dll文g复制到c:/windows/system32下面Qƈlguests用户l这些关于PHP5的dll文gd和运行的权限?br /> 免费考研|?a >www.freekaoyan.com

----------------------------------------------------------------------------------------------------------------------------

Windows版的PHP5和PHP4相比Q安装过E有些变化,安装更多的考虑C后的可升U性,安装PHP5时徏议安装在没有I格的目录名下,以免出现pQ如果安装在含有I格的目录下Q那么配|的时候最好将目录名用引号引v来,下是Windows版PHP5的安装方法:PHP5安装W记

Windows版的PHP5和PHP4相比Q安装更多的考虑C后的可升U性,安装PHP5时徏议安装在没有I格的目录名下,以免出现错误Q以下是Windows版PHP5的安装手册:

1。php4ts.dll/php5ts.dllQ对php4ts.dll/php5ts.dll的\径说明也比较清晰而且更加利于来的升U:W? 一U法案就是老的copy到系l目录,W二U方案就是添加PHP4/5?PATH%中去(我这个懒人,在PHP4时就独辟y径的喜Ƣ这么搞Q因样做 是符?a target="_blank">windows查找文g时搜索\径的序(.->%PATH%)?/p>

2。PHP.ini:Z安全和效率的考虑Q徏议用php.ini-recommended作ؓphp.ini的蓝?而不要? php.ini-dist。同时PHP.ini的查找\径也不再限于PHP4时代?SystemRoot%下了QPHP5按照以下路径查找 PHP.iniQ?/p>

        * PHPIniDir (Apache 2 module only)
        * 注册表键|HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath
        * 环境变量:%PHPRC%
        * PHP5的目?(for CLI), 或者web服务器目?for
          SAPI modules)
        * Windows目录(C:windows or C:winnt)
q五个方案中Q配合Apache2时最好用PHPIniDirQ其ơ是使用%PHPRC%环境变量Q另外,NTFS上记得给服务器开PHP.ini的读权限?/p>

3.配置web服务器:
      对于IISQ以IIS的ISAPI模块q行PHPQ?br />            1.在系l变量中d%PHPRC%变量Q取gؓ你的php.ini所在的目录(
比如在PHP5安装目录下?br />           2.Z使用HTTP AuthenticationQ在ISAPI Filters上添加一个属?br /> 为php5isapi.dll的PHP{选器Q如果不使用HTTP AuthenticationQ可以不这一步?br />           3.在主目录选项卡,点击配置Q应用程序映新建扩展名?phpq且可执行文件ؓphp5isapi.dll?br />           4.好了Q重新启动IISQ写个测试?/p>


      对于ApacheQ我一直都喜欢 以Apache的模块运行PHP
1.~辑httpd.conf
# LoadFile "e:/Apache/php4ts.dll"  
# LoadModule php4_module modules/php4apache.dll

#加蝲php5ts.dllQ这无论是apacheq是IIS都必M来的链接?br /> LoadFile "E:/PHP5/php5ts.dll"

#加蝲php5的apache模块
LoadModule php5_module "E:/PHP5/php5apache.dll"

#讄PHPRC变量,以提供给PH5查找配置文gPHP.ini,无需在跑?SystemRoot%下去找php.ini?br /> SetEnv PHPRC "E:/PHP5"

#注意Q如果定义了ClearModuleList指o,则添加如下语?如果没有则无L加,我当初没?br /> #d该行 ,l果测试用的phpinfo.php的源码给下蝲下来?br /> AddModule mod_php5.c

#Z兼容dphp3和php4的类?br /> AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4

2.重新启动apache(NET STOP apache && net start apache)Q写个测试?/p>

4.额外的配|?br /> Z更好的配|php5,q需要根据个人需要重新编辑你的php.ini:
比如需要用smart和pear Q则需要更改的?
include_path = ".;E:/PHP5/Smarty;E:/PHP5/PEAR"
另外php5再也不像php4那样内置了对mysql和ODBC的支持了Q而是只内|对ODBC
q行支持Q所以如果需要用Mysql数据库的话,q要讄extension_dir(php_mysql.dll)的目录以及用
extension加蝲php_mysql.dll

#修改extension_dir为:
extension_dir = "E:/PHP5/ext"
#删除extension=php_mysql.dll前的;,以加载php_mysql.dll
extension=php_mysql.dll
差不多就q些了?/p>

-------------------------------------------------------------------------------------------------------------------------------

安装 PHP5  

下载的php-5.0.3RC2-Win32.zip 解压~ƈ复制C选择的分ZQ如C盘)Qƈ其更名为PHP5。完成后的\径:C:"PHP5。以下步骤中假定 PHP 位于 c:"php5 中。你也可以选择其它的\径但最好不要用中间有空格的路径Q例如:C:"Program Files"PHP5 Q如果这样做有些 Web 服务器就会崩溃?nbsp; 

接下来复?C:"PHP5"目录下的 php5ts.dll 文g到c:"winnt"system32目录中?nbsp; 

下一步是讑֮有效?PHP 配置文gphp.ini?C:"PHP5中包括两?ini 文gQphp.ini-dist ? php.ini-recommended。其? php.ini-recommended寚w认设|作了性能和安全上的优化。我们这里选择php.ini-distQ将选择?ini 文g拯? PHP 能够扑ֈ的目录下q改名ؓ php.ini。在 Windows 2000 Server 中拷贝到c:"winnt中?nbsp; 

注意Q如果用了 NTFSQ确保运?webserver 的用户对 php.ini 有读取的权限Q例如其对 Everyone 可读Q?nbsp; 

正确加蝲对MySQL数据库的支持模块  

复制 C:"PHP5" 目录下的libmysql.dll文g?C:"windows"system32" 目录中?nbsp; 

用记事本打开~辑php.ini文gQ找到ƈ修改下面两行Q?nbsp; 

; Directory in which the loadable extensions (modules) reside.  
extension_dir = "./"  

成:  
; Directory in which the loadable extensions (modules) reside.  
extension_dir = "c:"php5"ext""  

再找C面两行:  

;Windows Extensions  
;Note that ODBC support is built in, so no dll is needed for it.  

?extension=php_mysql.dll前的分号L成:extension=php_mysql.dll然后保存文gq出即可PHP5支持MySQL数据库?nbsp; 

配置IIS服务?nbsp; 

依次点击“开?讄/控制面板/理工具/Internet服务理?ȝ?#8221;?nbsp; 

  

?#8220;ȝ?#8221;中点?#8220;配置”按钮Q在应用E序映射中添加一个新的条目。用 php5isapi.dll 的\径作为可执行文gQExecutableQ,?.php 作ؓ文g后缀Q如图:  



如果你不?PHP q行 HTTP 认证的话Q你可以不设|ISAPI{选器?nbsp; 

完全停止 IIS 服务Q再重新启动IIS服务。如果还是出现问题,则重新启动电脑?/p>

----------------------------------------------------------------------------------------------------------------------------

Winxp下php5Qmysql5详细安装教程-(l合使PHP5在IIS下支持MYSQL5 使用)

现在php和Mysql的黄金组合已l是开发动态网站的一个非常好的选择了,其对于我这样一个开源文化的支持者。经q长达两天的安装Q屡错屡勇, l于安装成功?nbsp;   下面是我Ҏ自己的实际安装过E,整理的一个详l安装说明,希望对广大的LAMP爱好者有所帮助Q避免把宝贵的时间浪费在没有M意义的安装过E上面?/p>

本文实际试q_说明Q?nbsp;      Windows XP home 版?/p>

说明Q一般来_windows2000和Windows XP的安装大同小异,唯一的区别可能就是下文中所q的pȝ目录的位|不同,windows2000的系l目录应该是/WINNT,Windows XPpȝ目录应该?WINdowsQ在复制相关文g时请注意要复制的目标文件夹的位|不要弄错?)  

APACHE2.0.58 (注意Q笔者安装时Q最新版本是apache_2.2.2Q但是此版本好像不支持php5的模块化安装Q笔者最l没有安装成?  PHP5.1.4  MYSQL5.0.22  phpMyAdmin-2.8.1    对应的安装文件分别是    apache_2.0.58-win32-x86-no_ssl.msi    php-5.1.4-Win32.zipQpecl-5.1.4-Win32.zip    mysql-5.0.22-win32.zip    phpMyAdmin-2.8.1.zip    请到官方|站下蝲对应版本的Y?

一、Mysql安装    Mysql在windowsq_下的安装是我们熟悉标准的安装Ƣ迎E序?nbsp;   如不需要改变默认安装目录,一直点击next卛_完成安装?nbsp;   下面按照安装序解释一下安装过E中的选项?nbsp; 

1、默认是TypicalQ徏议改成Custom    q一步需要选择lg及更Ҏ件夹位置Q组件用默认即可,选择Change改变安装目录Q注意:安装mysql的\径中Q不能含有中文!

2、程序提C是否要在mysql.com上注册,可以选择跌Q即Skip Sign-Up?nbsp; 

3、安装结束,选中现在开始配|mysql服务器的选择框?/p>

    4、配|开始,选择W一?Detailed Configuration  

5、选择mysql应用于何U类型,W一U是开发服务器Q将只用量的内存Q第二种是普通WEB服务器,用中{数量内存,最后一U是q台服务 器上面只跑mysql数据库,占用全部的内存Q根据自q需求,选择其中之一。我搭徏的是开发^収ͼq不是实际应用的数据库服务器Q所以选择W一 U?nbsp; 

6、选择数据库用途,W一U是多功能用途,把数据库优化成很好的innodb存储cd和高效率的myisam存储cdQ第二种是只用于事务处理c? 型,最好的优化innodbQ但同时也支持myisamQ最后一U是非事务处理类型,适合于简单的应用Q只有不支持事务的myisamcd是被支持的。一 般选择W一U多功能的,我选择的是W一U?/p>

    7、选择InnodDB的数据存放位|,默认卛_?nbsp; 

8、选择mysql允许的最大连接数Q可以根据自q需要选择Q默认即?nbsp; 

9、选择数据库监听的端口Q一般默认是3306Q如果改成其他端口,以后q接数据库的时候都要记住修改的端口Q否则不能连接mysql数据库,默认卛_  

10、设|mysql的默认编码,可以Ҏ需要,选择gb2312或gbkQ如果已有数据库文gQ要和原来已有的数据库的~码一_否则可能会出Cؕ码?/p>

11、选择是否要把mysql讄成windows的服务,选择设成服务Q这样以后就可以通过服务中启动和关闭mysql数据库了。推荐把下面的复选框也勾选上Q这P在cmd模式下,不必非到mysql的bin目录下执行命令?/p>

    12、设|mysql的超U用户密码,用户对mysql拥有全部的权限,下面的复选框选择是否允许q程机器用root用户q接C的mysql服务器上面,Ҏ需要选择?/p>

13、点击ExecuteQ如果前面的讄没有问题的话很快可以成功安装了?/p>

二、安装apache    安装Apache同样是我们熟悉标准的安装E序。非常直观?nbsp; 

安装q程中会提示输入L名,理员信q信箱Q这些信息安装完以后可以修改?q里可以直接按照安装E序中给出的CZ填写卛_Q如 somenet.com,[url]www.somenet.com[/url],webmaster@somenet.com。注意,I着q几也可以 安装成功Q但安装完成后启动apache服务器会提示~少理员信q错误Q所以徏议全部填写,虽然是虚构的Q?( ?/p>

安装完成后在d栏的右侧Q应该有一个类似apache那个羽毛的图标Q这是Apache2的服务管理器。如果图标的状态有昄l色三角,? 明服务器已经安装成功Q如果是U色的,则说明Apache没有安装成功,你需要进一步去找一下失败的Ҏ。一般的错误原因是apache的配|文件不正确 {,比如某一个模块没有正加载?/p>

三,安装 PHP5           下载的php-5.0.3RC2-Win32.zip 解压~ƈ复制C选择的安装目录中Q比? c:"php5。以下步骤中假定 PHP 位于 c:"php5 中。徏议不要用中间有空格的路径Q例如:C:"Program Files"PHP5?nbsp;     

下载的pecl-5.1.4-Win32.zip 解压~ƈ复制C选择的安装目录的ext子目录中。比如c:"php5"ext      

    复制 C:"PHP5"目录下的 php5ts.dll 文g到c:"winnt"system32目录中?nbsp; 

    复制 C:"PHP5" 目录下的libmysql.dll文g?C:"windows"system32" 目录中?nbsp;     

    复制 C:"PHP5" 目录下的php.ini-dist文g?C:"windows" 目录中,q改名ؓ php.ini?nbsp;     

说明QC:"PHP5中包括两?ini 文gQphp.ini-dist ?php.ini-recommended。其? php.ini-recommended寚w认设|作了性能和安全上的优化,安装实际q行的服务期推荐使用q个配置文g。我们安装的一般是开发^収ͼ所? 在这里选择php.ini-dist。注意:如果使用?NTFS文gpȝQ确保运?webserver 的用户对 php.ini 有读取的权限Q例如其对 Everyone 可读Q?nbsp;      

    用记事本打开~辑刚才复制到C:"windows" 目录中php.ini文g?nbsp;   扑ֈ下面两行    ; Directory in which the loadable extensions (modules) reside.     extension_dir = "./"     修改成:     ; Directory in which the loadable extensions (modules) reside.     extension_dir = "c:"php5"ext""     再找C面两行:

    ;Windows Extensions

    ;Note that ODBC support is built in, so no dll is needed for it.   

其中的一?extension=php_mysql.dll前面的分号去掉改?extension=php_mysql.dll  

然后保存文gq出即可PHP5支持MySQL数据?/p>

四:?Apache 解析 php 面

    用你喜欢的文本编辑器打开httpd.conf文g(在Apache的安装目录下)Q让我们加几行进去,q样我们Apache 可以解?.php ?phps文g了?/p>

我们需要注意conf文g的两个部分,

W一部分?Dynamic Shared Object (DSO) Support listQ?/p>

W二部分?cgi-bin directory    首先让我们找到如下所C的 DSO 列表.

    # Dynamic Shared Object (DSO) Support     #   

     # to be able to use the functionality of a module which was built as a DSO you   

# have to place corresponding `LoadModule' lines at this location so the  

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need  

# to be loaded here.     #   

# Example:  

# LoadModule foo_module modules/mod_foo.so  

q还有许多,一直找到最后一行:    #LoadModule ssl_module modules/mod_ssl.so     上面一行是该列表的最后一行,按回车生一个空的行Q在q个I内加入下面这行:

    LoadModule php4_module c:/php/sapi/php4apache2.dll

在关闭conf文g之前Q我们需要再加入两行。找到CGI-BIN目录Qؓ了节省时_可以q样找:按CTRL+F查找关键?nbsp;   CGI-BIN    Q?译者注Q如果你是在C本而不是写字板里编辑这个文本,那么Q应该用快捷键F3)查找 Q在W二个CGI-BIN目录后面两次回RQ以便加入下面两行:

    AddType application/x-httpd-php .php .phtml .php3 .php4  

    AddType application/x-httpd-php-source .phps   

五:安装phpAdmin      

1Q解压,压~包解压到php可以q行的目录,一般就是apache的根目录

2Q设|,拯{phpMyAdmin安装目录}/libraries/config.default.php 文g到phpMyAdmin安装目录Qƈ且重命名为config.inc.php    修改config.inc.php文g

$cfg[’Servers’][$i][’host’] = ‘localhost’; // MySQL的主机名U或者IP地址

$cfg[’Servers’][$i][’port’] = ‘3306′; // MySQL端口 - I白用默认端口3306  

$cfg[’Servers’][$i][’auth_type’] = ‘cookie’; // 认证方式 (config, http or cookie based)?

$cfg[’Servers’][$i][’user’] = ‘root’; // MySQL用户Q如 root

$cfg[’Servers’][$i][’password’] = ‘root’; // MySQL用户密码

启用php.ini中的字符讄扩展功能    extension=php_mbstring.dll

    注意Q编辑config.inc.php文g应用winxp自带写字板程序,不知道ؓ什么用C本打开昄的是无格式的文档?/p>

六、后?nbsp;   PHPQMYSQL,APACHE 的安装本来就是一件很单的事情Q特别是后来所讲的以模块化安装PHP的过E。由于最新版本的软g互相间的支持不是很好Q尽量选择本文选择的经q实际测? 可以安装成功的版本。大家有旉都不妨自p一下,q样你才能体验到成功的喜悦。最后祝大家都能利的安装AMP.



SIMONE 2009-06-16 17:08 发表评论
]]>
վ֩ģ壺 Ϫ| ˼| | | ʼ| | | | | ͨ| | | Դ| | | ׯ| | | Ͻ| | | | | ˮ| | Ǩ| ν| | ³ƶ| | | | | | | ޻| ˹| | ֦| | |