<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.creke.net/styles/feedsky6.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.creke.net" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/creke" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 17 Jan 2012 16:18:46 GMT</lastBuildDate><title>Creke Blog</title><description>从这里睁眼看世界</description><link>http://blog.creke.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Tue, 17 Jan 2012 16:18:46 GMT</pubDate><item><title>从火车票提取完整实名信息</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602839/6018541/1/item.html</link><content:encoded>&lt;p&gt;这里所说的完整的实名信息，包含姓名和身份证号码。从身份证号码可以知道籍贯、出生年月、性别。当然，进入相关数据库后，可以知道的东西就更多了。&lt;/p&gt;
&lt;p&gt;网络上很多地方都在稀里哗啦地泄露着各个中国公民的真实姓名与身份证号码的配套信息，甚至包括相关照片。这个……在这里就不讨论了，就此打住。&lt;/p&gt;
&lt;p&gt;这篇文章想说的是，从火车票中提取完整实名信息是多么的容易。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、被隐藏的4位身份证号码&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以前的实名制火车票是不会隐藏身份证号码的，全部打印在票面上。如下图：&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;huochepiao1.jpg&quot; href=&quot;http://www.flickr.com/photos/71508457@N00/6713478757/&quot;&gt;&lt;img border=&quot;0&quot; hspace=&quot;0&quot; alt=&quot;huochepiao1.jpg&quot; src=&quot;http://farm8.staticflickr.com/7142/6713478757_34a3d61f78.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后来，似乎觉得这样显示身份证信息不好，于是就隐去其中的4位。但是，加上了旅客的真实姓名。如下图：&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;huochepiao2.jpg&quot; href=&quot;http://www.flickr.com/photos/71508457@N00/6713484153/&quot;&gt;&lt;img border=&quot;0&quot; hspace=&quot;0&quot; alt=&quot;huochepiao2.jpg&quot; src=&quot;http://farm8.staticflickr.com/7012/6713484153_a7babb33c1.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、恢复被隐藏的4位&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在这里，我先介绍一下身份证的格式。&lt;/p&gt;
&lt;p&gt;现在的身份证为18位，前6位为地址码，如上图中的370112是山东省历城区。后跟着8位日期码，如上图中的1981****，表明身份证的主人是1981年的某月某日出生的。其中的月和日被“*”隐去。后面的两位是顺序号编码，即00。接着以为性别码，即1。最后的一位是校验码，算法如下：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;S = Ai * Wi, i = 2, &amp;#8230; , 18      &lt;br /&gt;Y = mod(S, 11)       &lt;br /&gt;i: 表示号码字符从右至左包括校验码字符在内的位置序号       &lt;br /&gt;Ai:表示第i位置上的身份证号码字符值       &lt;br /&gt;Wi:表示第i位置上的加权因子       &lt;br /&gt;i: 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1       &lt;br /&gt;Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可见被隐藏的4位信息，是身份证持有人的生日中的月份和日期。每年有多少天？最多366天。这下明白我的意思没？也就是说，我们只需要枚举最多366次，就可以将隐藏的信息还原，得到真实的身份证信息。而这366次枚举，还必须满足一个条件——前17位计算得到验证码必须和第18位得到的验证码匹配。&lt;/p&gt;
&lt;p&gt;到了这里，我们还需要考虑另一个问题，在这366次枚举中，匹配的概率是多少？我没有认真计算匹配的概率，但假设得到的验证码的概率为平均分布的情况下，366次尝试得到的可能结果为：366*(1/11)=33.3。&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;我们使用下面的程序进行枚举：&lt;/p&gt;
&lt;pre&gt;#include &amp;lt;iostream&amp;gt;

&lt;span style=&quot;color: #0000ff&quot;&gt;using&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;namespace&lt;/span&gt; std;

&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; nums[20];

&lt;span style=&quot;color: #0000ff&quot;&gt;bool&lt;/span&gt; verifyID(&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; nums[])
{
    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; iS = 0;
    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; iW[]={0, 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; verCode[] = {1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2};

    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; i;

    &lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt;(i=1;i&amp;lt;=17;i++)
    {
        iS += nums[i]* iW[i];
    }
    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; iY = iS%11;   

	&lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt;(nums[18]==verCode[iY])
	{
		&lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;true&lt;/span&gt;;
	}
	&lt;span style=&quot;color: #0000ff&quot;&gt;else&lt;/span&gt;
	{
		&lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;false&lt;/span&gt;;
	}
}

&lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; printNum(&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; nums[])
{
	&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; i;
	&lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt;(i=1;i&amp;lt;=17;i++)
	{
		printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%d&lt;/span&gt;&amp;quot;, nums[i]);
	}
	(nums[18]==10)?(printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;X&lt;/span&gt;&amp;quot;)):(printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%d&lt;/span&gt;&amp;quot;,nums[18]));
	printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;\n&lt;/span&gt;&amp;quot;);
}

&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; main()
{
	&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; i,j;
	&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; year,count;
	&lt;span style=&quot;color: #0000ff&quot;&gt;char&lt;/span&gt; buf[128],buf2[2];

	printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;前六位地区码：&lt;/span&gt;&amp;quot;);
	scanf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%s&lt;/span&gt;&amp;quot;,buf);

	nums[1]=buf[0]-'0';
	nums[2]=buf[1]-'0';
	nums[3]=buf[2]-'0';
	nums[4]=buf[3]-'0';
	nums[5]=buf[4]-'0';
	nums[6]=buf[5]-'0';

	printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;年份：&amp;quot;&lt;/span&gt;&amp;quot;);
	scanf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%s&lt;/span&gt;&amp;quot;,buf);

	nums[7]=buf[0]-'0';
	nums[8]=buf[1]-'0';
	nums[9]=buf[2]-'0';
	nums[10]=buf[3]-'0';

	year=nums[7]*1000+nums[8]*100+nums[9]*10+nums[10];
	&lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt;(year%400==0 || (year%400!=0 &amp;amp;&amp;amp; year%4==0))&lt;span style=&quot;color: #008000&quot;&gt;//闰¨¨°年¨o&lt;/span&gt;
	{
		days[2]=29;
	}
	&lt;span style=&quot;color: #0000ff&quot;&gt;else&lt;/span&gt;
	{
		days[2]=28;
	}

	printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;最后四位：&lt;/span&gt;&amp;quot;);
	scanf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%s&lt;/span&gt;&amp;quot;,buf);

	nums[15]=buf[0]-'0';
	nums[16]=buf[1]-'0';
	nums[17]=buf[2]-'0';
	nums[18]=(buf[3]=='x' || buf[4]=='X')?10:(buf[3]-'0');

	count=0;
	&lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt;(i=1;i&amp;lt;=12;i++)
	{
		&lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt;(j=1;j&amp;lt;=days[i];j++)
		{
			nums[11]=i/10;
			nums[12]=i%10;
			nums[13]=j/10;
			nums[14]=j%10;

			&lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt;(verifyID(nums))
			{
				printNum(nums);
				count++;
			}
		}
	}

	printf(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;共%d个结果\n&lt;/span&gt;&amp;quot;, count);

	&lt;span style=&quot;color: #008000&quot;&gt;//system(&amp;quot;pause&amp;quot;);&lt;/span&gt;

	&lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; 0;
}&lt;/pre&gt;
&lt;p&gt;运行结果如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;前六位地区码：370112&lt;br /&gt;
    &lt;br /&gt;年份：1981&lt;/p&gt;
&lt;p&gt;最后四位：0010&lt;/p&gt;
&lt;p&gt;70112198101020010&lt;/p&gt;
&lt;p&gt;70112198101100010&lt;/p&gt;
&lt;p&gt;70112198101290010&lt;/p&gt;
&lt;p&gt;70112198102090010&lt;/p&gt;
&lt;p&gt;70112198102170010&lt;/p&gt;
&lt;p&gt;70112198102250010&lt;/p&gt;
&lt;p&gt;70112198103050010&lt;/p&gt;
&lt;p&gt;70112198103130010&lt;/p&gt;
&lt;p&gt;70112198103210010&lt;/p&gt;
&lt;p&gt;70112198104010010&lt;/p&gt;
&lt;p&gt;70112198104280010&lt;/p&gt;
&lt;p&gt;70112198105080010&lt;/p&gt;
&lt;p&gt;70112198105160010&lt;/p&gt;
&lt;p&gt;70112198105240010&lt;/p&gt;
&lt;p&gt;70112198106040010&lt;/p&gt;
&lt;p&gt;70112198106120010&lt;/p&gt;
&lt;p&gt;70112198106200010&lt;/p&gt;
&lt;p&gt;70112198107190010&lt;/p&gt;
&lt;p&gt;70112198107270010&lt;/p&gt;
&lt;p&gt;70112198108070010&lt;/p&gt;
&lt;p&gt;70112198108150010&lt;/p&gt;
&lt;p&gt;70112198108230010&lt;/p&gt;
&lt;p&gt;70112198108310010&lt;/p&gt;
&lt;p&gt;70112198109030010&lt;/p&gt;
&lt;p&gt;70112198109110010&lt;/p&gt;
&lt;p&gt;70112198110090010&lt;/p&gt;
&lt;p&gt;70112198110170010&lt;/p&gt;
&lt;p&gt;70112198110250010&lt;/p&gt;
&lt;p&gt;70112198111050010&lt;/p&gt;
&lt;p&gt;70112198111130010&lt;/p&gt;
&lt;p&gt;70112198111210010&lt;/p&gt;
&lt;p&gt;70112198112010010&lt;/p&gt;
&lt;p&gt;70112198112280010&lt;/p&gt;
&lt;p&gt;共33个结果&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;3、更方便得到身份证号码的方法&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以下面的车票为例。&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;huochepiao_3.jpg&quot; href=&quot;http://www.flickr.com/photos/71508457@N00/6714764979/&quot;&gt;&lt;img border=&quot;0&quot; hspace=&quot;0&quot; alt=&quot;huochepiao_3.jpg&quot; src=&quot;http://farm8.staticflickr.com/7142/6714764979_2dbc74bfa8_m.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;车票上的身份证号码部分的信息被PS了很多哦。&lt;/p&gt;
&lt;p&gt;但是，我们扫描一下右边的二维码，得到：&lt;/p&gt;
&lt;p&gt;480176011454143443488249648788273804579014484911756460444584907044800460033197910200023053897628805389762880538976288053897628805389762880820000&lt;/p&gt;
&lt;p&gt;是的，里面的某部分内容就是被PS被“*”掉的身份证号码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、批量高技术方案&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;12306，不解释。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5、总结&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;个人别凑热闹晒车票，晒前也拜托好好打个马赛克，重分打个马赛克。还有，某些垄断组织好歹加强一下安全措施。&lt;/p&gt;
&lt;p&gt;本文点到即止，仅作学习交流用途。&lt;/p&gt;
&lt;p&gt;不多说了，就这些。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602839/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602839/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/781.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>这里所说的完整的实名信息，包含姓名和身份证号码。从身份证号码可以知道籍贯、出生年月、性别。当然，进入相关数据库后，可以知道的东西就更多了。  网络上很多地方都在稀里哗啦地泄露着各个中国公民的真实姓名与身份证号码的配套信息，甚至包括相关照片。这个……在这里就不讨论了，就此打住。  这...&lt;img src=&quot;http://www1.feedsky.com/t1/597602839/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602839/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>实名制</category><category>提取</category><category>梦溪笔记</category><category>实名</category><category>信息</category><category>火车票</category><category>完整</category><pubDate>Wed, 18 Jan 2012 00:18:46 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/781.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/781.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/781.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602839/6018541</fs:itemid></item><item><title>CentOS安装git</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602840/6018541/1/item.html</link><content:encoded>&lt;p&gt;CentOS默认源是没有git的，所以希望通过yum install来安装的童鞋们，不要在错误的道路上越走越远……&lt;/p&gt;
&lt;p&gt;所以，要从源安装，对应的命令：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel&lt;/p&gt;
&lt;p&gt;wget &lt;a href=&quot;http://git-core.googlecode.com/files/git-1.7.7.5.tar.gz&quot;&gt;http://git-core.googlecode.com/files/git-1.7.7.5.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;./configure &amp;#8211;prefix=/usr/local/git&lt;/p&gt;
&lt;p&gt;make&lt;/p&gt;
&lt;p&gt;make install&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后对执行文件进行链接，当然，如果安装在/usr/local目录的话，就不用这步了。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ln -s /usr/local/git/bin/git /usr/local/bin/git&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/gitk /usr/local/bin/gitk&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/git-shell /usr/local/bin/git-shell&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/git-upload-pack /usr/local/bin/git-upload-pack&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/git-cvsserver /usr/local/bin/git-cvsserver&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/git-receive-pack /usr/local/bin/git-receive-pack&lt;/p&gt;
&lt;p&gt;ln -s /usr/local/git/bin/git-upload-archive /usr/local/bin/git-upload-archive&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;常见问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1、如果出现“git: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory”&lt;/p&gt;
&lt;p&gt;在确认已经安装iconv库的情况下，执行以下命令：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;echo &amp;quot;/usr/local/lib&amp;quot; &amp;gt; /etc/ld.so.conf.d/git.conf&lt;/p&gt;
&lt;p&gt;/sbin/ldconfig&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2、如果在“git clone &lt;a href=&quot;https://***&amp;rdquo;时出现&amp;ldquo;error:14090086:SSL&quot;&gt;https://***”时出现“error:14090086:SSL&lt;/a&gt; routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing”&lt;/p&gt;
&lt;p&gt;在使用git前加上“GIT_SSL_NO_VERIFY=true”的环境变量，即：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;env GIT_SSL_NO_VERIFY=true git clone https://***&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602840/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602840/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/780.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>CentOS默认源是没有git的，所以希望通过yum install来安装的童鞋们，不要在错误的道路上越走越远……  所以，要从源安装，对应的命令：     yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel    wget http://git-core.googlecode.com/files/git-1.7.7.5.tar.gz    ./co...&lt;img src=&quot;http://www1.feedsky.com/t1/597602840/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602840/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><category>安装</category><category>git</category><category>所谓技术</category><category>install</category><category>CentOS</category><pubDate>Mon, 09 Jan 2012 20:06:01 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/780.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/780.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/780.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602840/6018541</fs:itemid></item><item><title>firefox蛋疼升级到9.0.1后提示“附加组件不兼容”解决办法</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602841/6018541/1/item.html</link><content:encoded>&lt;p&gt;firefox蛋疼升级到9.0.1后提示“附加组件不兼容”解决办法&lt;/p&gt;
&lt;p&gt;访问about:config-&amp;gt;我保证我会小心-&amp;gt;右击“新建”-&amp;gt;“布尔值”-&amp;gt;名称中填写“extensions.checkCompatibility.9.0”-&amp;gt;值的内容为“false”。重启firefox即可屏蔽兼容性检查，直接启用插件。 将来升级到10的话，将上面的“extensions.checkCompatibility.9.0”改为“extensions.checkCompatibility.10.0”即可。&lt;/p&gt;
&lt;p&gt;参考： &lt;a href=&quot;http://kb.mozillazine.org/Extensions.checkCompatibility&quot;&gt;http://kb.mozillazine.org/Extensions.checkCompatibility&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;需要注意的是，在“附加组件管理器”中搜索某个插件，可能会提示“找不到任何匹配的附加组件”，这是因为，即使设置了安装插件是不检查兼容性，但搜索时自动过滤了Firefox认为不兼容的插件。这时，需要移步去&lt;a href=&quot;https://addons.mozilla.org/&quot;&gt;https://addons.mozilla.org/&lt;/a&gt;搜索对应插件。&lt;/p&gt;
&lt;p&gt;在about:config怎么删除一个首选项名称：如果是自己添加的，在键上点右键→ 重置，重新启动firefox之后就没有了。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602841/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602841/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/778.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>firefox蛋疼升级到9.0.1后提示“附加组件不兼容”解决办法  访问about:config-&amp;#62;我保证我会小心-&amp;#62;右击“新建”-&amp;#62;“布尔值”-&amp;#62;名称中填写“extensions.checkCompatibility.9.0”-&amp;#62;值的内容为“false”。重启firefox即可屏蔽兼容性检查，直接启用插件。 将来升级到10的话，将上面的“ext...&lt;img src=&quot;http://www1.feedsky.com/t1/597602841/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602841/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>不兼容</category><category>firefox</category><category>解决</category><category>升级</category><category>所谓技术</category><category>提示</category><category>办法</category><category>附加组件</category><category>兼容</category><pubDate>Sat, 24 Dec 2011 15:59:27 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/778.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/778.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/778.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602841/6018541</fs:itemid></item><item><title>关于SSL证书通用名（CN）通配符的实验</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602842/6018541/1/item.html</link><content:encoded>&lt;p&gt;&lt;strong&gt;实验目的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么是通配符SSL证书？威瑞信的解释：SSL通配符证书是在一个单一的证书中，在通用名（域名）中包含一个“*”通配符字段。这使得该证书可以保护无限数量的多个子域名（主机）。例如，一个通配符证书*. domain.com ，可用于www.domain.com ， mail.domain.com ，pay.domain.com …&lt;/p&gt;
&lt;p&gt;如果使用自己认证的CA，颁发一个通用名为*.com或者*.net的证书，能不能分别匹配所有的.com或者.net的网站？再拓展一下，如果颁发一个通用名为*的证书能不能匹配任何网站？&lt;/p&gt;
&lt;p&gt;本实验探索浏览器对SSL通配符证书的匹配情况，对以上所提出的疑问进行解答。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验要求&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1、用自己生成，并在授权信任的的CA生成*.net和*两种证书&lt;/p&gt;
&lt;p&gt;2、配置对应的WEB网站&lt;/p&gt;
&lt;p&gt;3、在不同的浏览器中访问对应WEB网站，观察结果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对OpenSSL及WEB服务器的具体操作参考&lt;a href=&quot;http://blog.creke.net/762.html&quot; target=&quot;_blank&quot;&gt;为nginx配置https并自签名证书&lt;/a&gt;一文。&lt;/p&gt;
&lt;p&gt;1、生成相关CA，并在各个浏览器和系统中进行授权信任，步骤略。&lt;/p&gt;
&lt;p&gt;2、*.creke.net、*.net.cn、*.net和*四种SSL通配符证书。&lt;/p&gt;
&lt;p&gt;3、配置WEB服务器，使得creke.net、ssl1.creke.net、ssl1.recgo.com与sslhost1对应*.net的证书；使得ssl2.creke.net、ssl2.recgo.com与sslhost2对应*的证书；使得blog.creke.net与ssl1.blog.creke.net对应*.creke.net的证书；使得creke.net.cn对应*.net.cn的证书。注意，由于SSL不能用基于域名方式的方法来支持多个SSL，只能用多个IP或者多个端口。在这里，我们将不同的域名对应不同的端口。&lt;/p&gt;
&lt;p&gt;4、在本地host解析以上各个域名&lt;/p&gt;
&lt;p&gt;5、在IE、Firefox、Chrome、Opera、Safari五大浏览器中访问第三部配置的8个网站。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验结果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;除了blog.creke.net和creke.net.cn能够正常认证外，其余的8个网站均提示证书错误。所有五大浏览器结果一致。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验结论&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1、浏览器对于通配符*只匹配域名中的某一级，即通配符*不匹配“.”。如*.creke.net匹配blog.creke.net，但不匹配ssl1.blog.creke.net。&lt;/p&gt;
&lt;p&gt;2、通配符后面的域名必须有两级或以上。如*.creke.net和*.net.cn都是可用的证书；而*.net和*都是不可用的，任何域名都无法通过认证。&lt;/p&gt;
&lt;p&gt;3、通过进一步实验得知，通配符不允许为空。如：*.creke.net是不能匹配creke.net的。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602842/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602842/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/777.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>实验目的  什么是通配符SSL证书？威瑞信的解释：SSL通配符证书是在一个单一的证书中，在通用名（域名）中包含一个“*”通配符字段。这使得该证书可以保护无限数量的多个子域名（主机）。例如，一个通配符证书*. domain.com ，可用于www.domain.com ， mail.domain.com ，pay.domain.com …  如果使用...&lt;img src=&quot;http://www1.feedsky.com/t1/597602842/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602842/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>CN</category><category>通配符</category><category>通用名</category><category>梦溪笔记</category><category>证书</category><category>关于</category><category>SSL</category><category>实验</category><pubDate>Wed, 21 Dec 2011 16:49:45 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/777.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/777.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/777.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602842/6018541</fs:itemid></item><item><title>CentOS下安装使用start-stop-daemon</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602843/6018541/1/item.html</link><content:encoded>&lt;p&gt;CentOS是没有start-stop-daemon的，因为start-stop-daemon在debian的dpkg包里。要安装的话，需要自己折腾。&lt;/p&gt;
&lt;p&gt;相关命令如下：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;wget &lt;a href=&quot;http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz&quot;&gt;http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;tar zxf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz&lt;/p&gt;
&lt;p&gt;mv apps/sys-utils/start-stop-daemon-IR1_9_18-2/ ./&lt;/p&gt;
&lt;p&gt;rm -rf apps&lt;/p&gt;
&lt;p&gt;cd start-stop-daemon-IR1_9_18-2/&lt;/p&gt;
&lt;p&gt;cc start-stop-daemon.c -o start-stop-daemon&lt;/p&gt;
&lt;p&gt;cp start-stop-daemon /usr/local/bin/start-stop-daemon&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;至此安装完成。可以看到：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;[root@localhost ~]# start-stop-daemon &amp;#8211;help     &lt;br /&gt;start-stop-daemon 1.9.18 for Debian &amp;#8211; small and fast C version written by      &lt;br /&gt;Marek Michalkiewicz &amp;lt;marekm@i17linuxb.ists.pwr.wroc.pl&amp;gt;, public domain. &lt;/p&gt;
&lt;p&gt;Usage:     &lt;br /&gt;&amp;#160; start-stop-daemon -S|&amp;#8211;start options &amp;#8230; &amp;#8212; arguments &amp;#8230;      &lt;br /&gt;&amp;#160; start-stop-daemon -K|&amp;#8211;stop options &amp;#8230;      &lt;br /&gt;&amp;#160; start-stop-daemon -H|&amp;#8211;help      &lt;br /&gt;&amp;#160; start-stop-daemon -V|&amp;#8211;version &lt;/p&gt;
&lt;p&gt;Options (at least one of &amp;#8211;exec|&amp;#8211;pidfile|&amp;#8211;user is required):     &lt;br /&gt;&amp;#160; -x|&amp;#8211;exec &amp;lt;executable&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; program to start/check if it is running      &lt;br /&gt;&amp;#160; -p|&amp;#8211;pidfile &amp;lt;pid-file&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pid file to check      &lt;br /&gt;&amp;#160; -c|&amp;#8211;chuid &amp;lt;name|uid[:group|gid]&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; change to this user/group before starting process      &lt;br /&gt;&amp;#160; -u|&amp;#8211;user &amp;lt;username&amp;gt;|&amp;lt;uid&amp;gt;&amp;#160;&amp;#160;&amp;#160; stop processes owned by this user      &lt;br /&gt;&amp;#160; -n|&amp;#8211;name &amp;lt;process-name&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stop processes with this name      &lt;br /&gt;&amp;#160; -s|&amp;#8211;signal &amp;lt;signal&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; signal to send (default TERM)      &lt;br /&gt;&amp;#160; -a|&amp;#8211;startas &amp;lt;pathname&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; program to start (default is &amp;lt;executable&amp;gt;)      &lt;br /&gt;&amp;#160; -N|&amp;#8211;nicelevel &amp;lt;incr&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; add incr to the process&amp;#8217;s nice level      &lt;br /&gt;&amp;#160; -b|&amp;#8211;background&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; force the process to detach      &lt;br /&gt;&amp;#160; -m|&amp;#8211;make-pidfile&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; create the pidfile before starting      &lt;br /&gt;&amp;#160; -R|&amp;#8211;retry &amp;lt;schedule&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; check whether processes die, and retry      &lt;br /&gt;&amp;#160; -t|&amp;#8211;test&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test mode, don&amp;#8217;t do anything      &lt;br /&gt;&amp;#160; -o|&amp;#8211;oknodo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; exit status 0 (not 1) if nothing done      &lt;br /&gt;&amp;#160; -q|&amp;#8211;quiet&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; be more quiet      &lt;br /&gt;&amp;#160; -v|&amp;#8211;verbose&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; be more verbose      &lt;br /&gt;Retry &amp;lt;schedule&amp;gt; is &amp;lt;item&amp;gt;|/&amp;lt;item&amp;gt;/&amp;#8230; where &amp;lt;item&amp;gt; is one of      &lt;br /&gt; -&amp;lt;signal-num&amp;gt;|[-]&amp;lt;signal-name&amp;gt;&amp;#160; send that signal      &lt;br /&gt; &amp;lt;timeout&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; wait that many seconds      &lt;br /&gt; forever&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; repeat remainder forever      &lt;br /&gt;or &amp;lt;schedule&amp;gt; may be just &amp;lt;timeout&amp;gt;, meaning &amp;lt;signal&amp;gt;/&amp;lt;timeout&amp;gt;/KILL/&amp;lt;timeout&amp;gt; &lt;/p&gt;
&lt;p&gt;Exit status:&amp;#160; 0 = done&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1 = nothing done (=&amp;gt; 0 if &amp;#8211;oknodo)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3 = trouble&amp;#160;&amp;#160; 2 = with &amp;#8211;retry, processes wouldn&amp;#8217;t die&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本文参考了&lt;a href=&quot;http://shriikant.blogspot.com/2011/08/start-stop-daemon-script-for-centos-5.html&quot; target=&quot;_blank&quot;&gt;此文档&lt;/a&gt;。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602843/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602843/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/776.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>CentOS是没有start-stop-daemon的，因为start-stop-daemon在debian的dpkg包里。要安装的话，需要自己折腾。  相关命令如下：     wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz    tar zxf apps-sys-utils-start-stop-daemon-IR1_9_18-...&lt;img src=&quot;http://www1.feedsky.com/t1/597602843/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602843/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><category>梦溪笔记</category><category>安装</category><category>使用</category><category>CentOS</category><category>start-stop-daemon</category><pubDate>Tue, 20 Dec 2011 16:48:17 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/776.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/776.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/776.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602843/6018541</fs:itemid></item><item><title>PHP的curl/libcurl连接https/SSL网站</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602844/6018541/1/item.html</link><content:encoded>&lt;p&gt;在PHP中使用libcurl连接https/SSL网站，可以用以下代码测试是否连接畅通：&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;?&lt;/span&gt;
$curl = &lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_init&quot;&gt;curl_init&lt;/a&gt;();
&lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_setopt&quot;&gt;curl_setopt&lt;/a&gt;($curl, CURLOPT_URL, '&lt;span style=&quot;color: #8b0000&quot;&gt;https://passport.baidu.com/?login&lt;/span&gt;');
&lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_setopt&quot;&gt;curl_setopt&lt;/a&gt;($curl, CURLOPT_POST, &lt;a style=&quot;color: #0000ff&quot; href=&quot;http://www.php.net/false&quot;&gt;false&lt;/a&gt;);
$curl_res = &lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_exec&quot;&gt;curl_exec&lt;/a&gt;($curl);
&lt;a style=&quot;color: #0000ff&quot; href=&quot;http://www.php.net/echo&quot;&gt;echo&lt;/a&gt; $curl_res;
&lt;a style=&quot;color: #0000ff&quot; href=&quot;http://www.php.net/if&quot;&gt;if&lt;/a&gt; (&lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_errno&quot;&gt;curl_errno&lt;/a&gt;($curl)) {
	&lt;a style=&quot;color: #0000ff&quot; href=&quot;http://www.php.net/echo&quot;&gt;echo&lt;/a&gt; '&lt;span style=&quot;color: #8b0000&quot;&gt;Error: &lt;/span&gt;' . &lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_error&quot;&gt;curl_error&lt;/a&gt;($curl);
}
&lt;a style=&quot;color: #ffa500&quot; href=&quot;http://www.php.net/curl_close&quot;&gt;curl_close&lt;/a&gt;($curl);
&lt;span style=&quot;color: #0000ff&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;如果显示正常，则证明连接畅通。&lt;/p&gt;
&lt;p&gt;如果显示“Error: couldn&amp;#8217;t connect to host”，则证明出错啦！&lt;/p&gt;
&lt;p&gt;首先，进入phpinfo页面查看libcurl，看看curl字段是否有OpenSSL支持。如果没有，那就自己折腾PHP的安装吧！&lt;/p&gt;
&lt;p&gt;然后，将libeay32.dll和ssleay32.dll拷贝到windows目录、system32目录；或者如果是命令行运行PHP，则拷贝到当前运行目录；或运行Apache运行PHP，则拷贝到当前运行Apache的目录。&lt;/p&gt;
&lt;p&gt;重启Apache或者PHP，再次执行代码查看是否正常。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602844/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602844/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/775.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>在PHP中使用libcurl连接https/SSL网站，可以用以下代码测试是否连接畅通：
&amp;#60;?
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://passport.baidu.com/?login');
curl_setopt($curl, CURLOPT_POST, false);
$curl_res = curl_exec($curl);
echo $curl_res;
if (curl_errno($curl)) {
	echo 'Error: ' . curl_error($curl);
}
curl_close($curl);
?&amp;#62;
如果显示正常，则证明连接畅通。
如果显示“Error: couldn&amp;#8217;t connect to host”，则证明出错啦！
首先，进入phpinfo页面查看libcurl，看看curl字段是否有OpenSSL支持。如果没有，那就自己折腾PHP的安装吧！
然后，将libeay32.dll和ssleay32.dll拷贝到windows目录、system32目录；或者如果是命令行运行PHP，则拷贝到当前运行目录；或运行Apache运行PHP，则拷贝到当前运行Apache的目录。
重启Apache或者PHP，再次执行代码查看是否正常。&lt;img src=&quot;http://www1.feedsky.com/t1/597602844/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602844/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>网站</category><category>PHP</category><category>https</category><category>libcurl</category><category>所谓技术</category><category>连接</category><category>SSL</category><category>curl</category><pubDate>Fri, 09 Dec 2011 12:23:40 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/775.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/775.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/775.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602844/6018541</fs:itemid></item><item><title>Windows下编译安装Privoxy</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602845/6018541/1/item.html</link><content:encoded>&lt;p&gt;首先，要安装MingW。在此不赘述。当然，用cygwin也可以，但是这样编译出来的Privoxy没有GUI图形界面。PS：Privoxy在jcc.c那里已经自动识别了MingW，并且嵌入了Windows GUI的API，因此编译出来就可以自己采用图形界面了。&lt;/p&gt;
&lt;p&gt;然后，在&lt;a href=&quot;https://sourceforge.net/projects/ijbswa/files/&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt;下载Privoxy的源代码，本文以privoxy-3.0.18-stable为例。&lt;/p&gt;
&lt;p&gt;进入privoxy-3.0.18-stable源码目录，执行以下命令，进入bash：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;bash&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;执行以下命令，进行配置：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;autoheader     &lt;br /&gt;autoconf      &lt;br /&gt;./configure &amp;#8211;prefix=/r/privoxy &amp;#8211;enable-mingw32 &amp;#8211;disable-pthread&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;稍微解释以下configure的各个参数。&amp;#8211;prefix参数指明privoxy的安装目录，/r/privoxy是mingw表示windows文件系统的方式，即R盘的privoxy文件夹。&amp;#8211;enable-mingw32指明了为mingw环境配置，其实不指明配置程序也会自动检测得到。&amp;#8211;disable-pthread是禁用POSIX的pthread，privoxy会自动使用windows API的thread来实现线程，具体参照errlog.c的部分代码：&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;color: #008000&quot;&gt;/*********************************************************************
 *
 * Function    :  get_thread_id
 *
 * Description :  Returns a number that is different for each thread.
 *
 *                XXX: Should be moved elsewhere (miscutil.c?)
 *
 * Parameters  :  None
 *
 * Returns     :  thread_id
 *
 *********************************************************************/&lt;/span&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;long&lt;/span&gt; get_thread_id(&lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt;)
{
   &lt;span style=&quot;color: #0000ff&quot;&gt;long&lt;/span&gt; this_thread = 1;  &lt;span style=&quot;color: #008000&quot;&gt;/* was: pthread_t this_thread;*/&lt;/span&gt;

#ifdef __OS2__
   PTIB     ptib;
   APIRET   ulrc; &lt;span style=&quot;color: #008000&quot;&gt;/* XXX: I have no clue what this does */&lt;/span&gt;
#endif &lt;span style=&quot;color: #008000&quot;&gt;/* __OS2__ */&lt;/span&gt;

   &lt;span style=&quot;color: #008000&quot;&gt;/* FIXME get current thread id */&lt;/span&gt;
#ifdef FEATURE_PTHREAD
   this_thread = (&lt;span style=&quot;color: #0000ff&quot;&gt;long&lt;/span&gt;)pthread_self();
#ifdef __MACH__
   &lt;span style=&quot;color: #008000&quot;&gt;/*
    * Mac OSX (and perhaps other Mach instances) doesn't have a debuggable
    * value at the first 4 bytes of pthread_self()'s return value, a pthread_t.
    * pthread_t is supposed to be opaque... but it's fairly random, though, so
    * we make it mostly presentable.
    */&lt;/span&gt;
   this_thread = &lt;span style=&quot;color: #0000ff&quot;&gt;abs&lt;/span&gt;(this_thread % 1000);
#endif &lt;span style=&quot;color: #008000&quot;&gt;/* def __MACH__ */&lt;/span&gt;
#elif defined(_WIN32)
   this_thread = GetCurrentThreadId();
#elif defined(__OS2__)
   ulrc = DosGetInfoBlocks(&amp;amp;ptib, NULL);
   &lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt; (ulrc == 0)
     this_thread = ptib -&amp;gt; tib_ptib2 -&amp;gt; tib2_ultid;
#endif &lt;span style=&quot;color: #008000&quot;&gt;/* def FEATURE_PTHREAD */&lt;/span&gt;

   &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; this_thread;
}&lt;/pre&gt;
&lt;p&gt;配置成功后，编译安装：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;make&lt;/p&gt;
&lt;p&gt;make install&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其实，make后已经有privoxy.exe，可以下载官方的Win32版本的ZIP包，替换里面的privoxy.exe即可使用，无需再make install。&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;一些注意的问题：&lt;/p&gt;
&lt;p&gt;1、编译时提示未定义“NI_MAXSERV”&lt;/p&gt;
&lt;p&gt;编译时出现如下错误：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;jbsockets.c: In function &amp;#8216;get_host_information&amp;#8217;:&lt;br /&gt;
    &lt;br /&gt;jbsockets.c:979:22: error: &amp;#8216;NI_MAXSERV&amp;#8217; undeclared (first use in this function)&lt;/p&gt;
&lt;p&gt;jbsockets.c:979:22: note: each undeclared identifier is reported only once for e&lt;/p&gt;
&lt;p&gt;ach function it appears in&lt;/p&gt;
&lt;p&gt;make: *** [jbsockets.o] Error 1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;修改jbsockets.c，在&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;const char jbsockets_h_rcs[] = JBSOCKETS_H_VERSION;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;前面加上：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/* MOD BY Creke START */&lt;br /&gt;
    &lt;br /&gt;#ifndef NI_MAXSERV&lt;/p&gt;
&lt;p&gt;#define NI_MAXSERV&amp;#160;&amp;#160;&amp;#160; 32&lt;/p&gt;
&lt;p&gt;#endif&lt;/p&gt;
&lt;p&gt;/* MOD BY Creke END */ &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;说实话，这是configure没有识别getnameinfo和getaddrinfo，因此config.h中没有定义HAVE_RFC2553所致。这些依赖于官方修复，再次仅拷贝ws2tcpip.h中的相关值进来，作临时修补。&lt;/p&gt;
&lt;p&gt;2、MingW默认安装的话，需要额外的库吗？&lt;/p&gt;
&lt;p&gt;需要zlib库，在mingw中又称为libz，可以在这里&lt;a href=&quot;http://sourceforge.net/projects/mingw/files/MinGW/Extension/zlib/&quot; target=&quot;_blank&quot;&gt;下载&lt;/a&gt;。当然，如果需要将privoxy拷贝到其它电脑运行，需要将libz-1.dll拷贝到privoxy程序目录中。&lt;/p&gt;
&lt;p&gt;3、额外的DLL？&lt;/p&gt;
&lt;p&gt;libgcc_s_dw2-1.dll&lt;/p&gt;
&lt;p&gt;4、编译好如何发行和安装？&lt;/p&gt;
&lt;p&gt;推荐下载官方发行的win32的zip包，将编译好的privoxy.exe覆盖。同时别忘记拷贝依赖的dll。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602845/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602845/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/774.html/feed</wfw:commentRss><slash:comments>6</slash:comments><description>首先，要安装MingW。在此不赘述。当然，用cygwin也可以，但是这样编译出来的Privoxy没有GUI图形界面。PS：Privoxy在jcc.c那里已经自动识别了MingW，并且嵌入了Windows GUI的API，因此编译出来就可以自己采用图形界面了。  然后，在这里下载Privoxy的源代码，本文以privoxy-3.0.18-stable为例。  进入...&lt;img src=&quot;http://www1.feedsky.com/t1/597602845/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602845/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>安装</category><category>Privoxy</category><category>所谓技术</category><category>Windows</category><category>编译</category><category>MinGW</category><pubDate>Wed, 07 Dec 2011 19:17:00 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/774.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/774.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/774.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602845/6018541</fs:itemid></item><item><title>使用plowshare命令行下自动下载国内外网盘资源</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602846/6018541/1/item.html</link><content:encoded>&lt;p&gt;下载plowshare：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;git clone https://code.google.com/p/plowshare/&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;安装：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;PREFIX=/usr/local/plowshare make install&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;执行链接：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ln -s /usr/local/plowshare/bin/plowdown /usr/bin/plowdown     &lt;br /&gt;ln -s /usr/local/plowshare/bin/plowup /usr/bin/plowup      &lt;br /&gt;ln -s /usr/local/plowshare/bin/plowlist /usr/bin/plowlist      &lt;br /&gt;ln -s /usr/local/plowshare/bin/plowdel /usr/bin/plowdel&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下载国内外网盘的东西，如网盘下载链接为“http://xxx/xxx”只需执行一条命令&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;plowdown http://xxx/xxx&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果plowshare出现“Can&amp;#8217;t locate HTML/Entities.pm in @INC”，执行以下命令：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpan&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;（如果是第一次使用cpan，根据自己情况配置好）&lt;/p&gt;
&lt;p&gt;当看到：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpan&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;输入：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;install HTML::Entities&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这样就会修复上述问题啦！&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602846/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602846/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/773.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>下载plowshare：     git clone https://code.google.com/p/plowshare/   安装：     PREFIX=/usr/local/plowshare make install   执行链接：     ln -s /usr/local/plowshare/bin/plowdown /usr/bin/plowdown     ln -s /usr/local/plowshare/bin/plowup /usr/bin/plowup      ln -s /usr/local/pl...&lt;img src=&quot;http://www1.feedsky.com/t1/597602846/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602846/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>网盘</category><category>下载</category><category>国内外</category><category>plowshare</category><category>资源</category><category>命令行</category><category>所谓技术</category><category>自动</category><pubDate>Tue, 29 Nov 2011 22:54:41 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/773.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/773.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/773.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602846/6018541</fs:itemid></item><item><title>CentOS5安装后常见问题解决方案</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602847/6018541/1/item.html</link><content:encoded>&lt;p&gt;&lt;strong&gt;教育网用户怎么设置更新源？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用163的更新源吧：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old     &lt;br /&gt;wget &lt;a href=&quot;http://mirrors.163.com/.help/CentOS5-Base-163.repo&quot;&gt;http://mirrors.163.com/.help/CentOS5-Base-163.repo&lt;/a&gt;      &lt;br /&gt;mv CentOS5-Base-163.repo /etc/yum.repos.d/CentOS5-Base-163.repo&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;用了163更新源，yum install时出现“GPG key retrieval failed: [Errno 4] IOError: &amp;lt;urlopen error (111, &amp;#8216;Connection refused&amp;#8217;)&amp;gt;”咋办？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;那是你的教育网不能连国外网站，获取不了官网镜像上的GPG公钥。解决方法：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;编辑/etc/yum.repos.d/CentOS5-Base-163.repo&lt;/p&gt;
&lt;p&gt;把其中的“gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5”&lt;/p&gt;
&lt;p&gt;改为“gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;SSH在机子里可以连接，在机子外不能？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;确认是不是防火墙iptables挡住了吧！解决办法：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;iptables -I INPUT 1 -p tcp &amp;#8211;dport 22 -j ACCEPT     &lt;br /&gt;iptables-save      &lt;br /&gt;services iptables save&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;好啦，差不多就这么多，最后附一个&lt;strong&gt;dev环境的给力批量安装脚本&lt;/strong&gt;。保存为xxoo.sh使用。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;#! /bin/bash     &lt;br /&gt;for packages in patch make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip screen;      &lt;br /&gt;do yum -y install $packages; done&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602847/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602847/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/772.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>教育网用户怎么设置更新源？  用163的更新源吧：     mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old     wget http://mirrors.163.com/.help/CentOS5-Base-163.repo      mv CentOS5-Base-163.repo /etc/yum.repos.d/CentOS5-Base-163.repo   用了163更新源，yum ins...&lt;img src=&quot;http://www1.feedsky.com/t1/597602847/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602847/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>所谓技术</category><category>CentOS5</category><pubDate>Sun, 20 Nov 2011 00:44:34 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/772.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/772.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/772.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602847/6018541</fs:itemid></item><item><title>Eclipse支持PHP使用Zend Debugger调试</title><link>http://item.feedsky.com/~feedsky/creke/~7908793/597602848/6018541/1/item.html</link><content:encoded>&lt;p&gt;&lt;strong&gt;一、安装Eclipse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下载地址为&lt;a title=&quot;http://www.eclipse.org/downloads/&quot; href=&quot;http://www.eclipse.org/downloads/&quot;&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上面有好多个版本，通过Compare Packages科研看到其中的区别。开发PHP的话，Eclipse IDE for JavaScript Web Developers就行。但我考虑到以后可能要用它来折腾JAVA EE，所以下了Eclipse IDE for Java EE Developers。&lt;/p&gt;
&lt;p&gt;下载下来的是ZIP包，解压即可用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、安装Eclipse for PHP集成开发环境&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;a title=&quot;http://wiki.eclipse.org/PDT/Installation#Installation_Flow&quot; href=&quot;http://wiki.eclipse.org/PDT/Installation#Installation_Flow&quot;&gt;http://wiki.eclipse.org/PDT/Installation#Installation_Flow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择“Help”——“Install New Software&amp;#8230;”——Work With下拉菜单处选择对应版本的release，如我的3.7选“Indigo &amp;#8211; &lt;a href=&quot;http://download.eclipse.org/releases/indigo&quot;&gt;http://download.eclipse.org/releases/indigo&lt;/a&gt;”——展开“Programming Languages”——选择“PHP Development Tools”。&lt;/p&gt;
&lt;p&gt;然后确认条款，等待安装，重启Eclipse即可支持PHP开发。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、PHP配置Zend Debugger&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在&lt;a href=&quot;http://www.zend.com/en/products/studio/downloads&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt;，点击“Studio Web Debugger”那个链接，下载ZendDebugger，解压缩，如我解压缩到W:\ZendDebugger文件夹中。&lt;/p&gt;
&lt;p&gt;我是使用PHP5.2，则讲ZendDebugger文件夹中的5.2.x_comp改名为php-5.2.x。&lt;/p&gt;
&lt;p&gt;然后在php.ini的[Zend]段末加上以下内容：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;; zend_debugger     &lt;br /&gt;zend_extension_manager.debug_server_ts=&amp;quot;W:\ZendDebugger&amp;quot;      &lt;br /&gt;;zend_debugger.allow_hosts=127.0.0.1,192.168.0.0/24      &lt;br /&gt;zend_debugger.expose_remotely=always&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;注意，如果是有安装Zend Optimizer的话，要在Zend Optimizer的配置后加入Zend Debugger的配置语句。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四、联合Eclipse和Zend Debugger&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;首先，开启WWW服务器，确认Zend Debugger成功配置。&lt;/p&gt;
&lt;p&gt;然后，开启Eclipse。&lt;/p&gt;
&lt;p&gt;在Eclipse中，选择“Window”——“Preferences”——“PHP”——“PHP executables”。在里面设置php的各项参数。我把SAPI设为“CGI”。&lt;/p&gt;
&lt;p&gt;在Eclipse中，选择“Window”——“Preferences”——“PHP”——“Debug”——“Installed Debuggers”。在里面设置php的各项参数。把Zend Debugger的“Debug Port”设为“10137”，默认的端口为10137，需要与php.ini设置的一致。&lt;/p&gt;
&lt;p&gt;将W:\ZendDebugger中的dummy.php拷贝至Web服务器的根目录中。&lt;/p&gt;
&lt;p&gt;在Eclipse中，选择“Run”——“Debug Configuration&amp;#8230;”。在PHP Web Page中右击，选“new”，新建一个server配置，并设置好其中各项内容。点击“Test Debugger”，如果成功了就恭喜恭喜。如果没通过，则按照出错提示修正配置错误。&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;OK，大功告成。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/597602848/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602848/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.creke.net/771.html/feed</wfw:commentRss><slash:comments>3</slash:comments><description>一、安装Eclipse  下载地址为http://www.eclipse.org/downloads/  上面有好多个版本，通过Compare Packages科研看到其中的区别。开发PHP的话，Eclipse IDE for JavaScript Web Developers就行。但我考虑到以后可能要用它来折腾JAVA EE，所以下了Eclipse IDE for Java EE Developers。  下载下来的是Z...&lt;img src=&quot;http://www1.feedsky.com/t1/597602848/creke/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/creke/~7908793/597602848/6018541/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>PHP</category><category>所谓技术</category><category>Zend Debugger</category><category>Eclipse</category><category>支持</category><category>调试</category><pubDate>Fri, 18 Nov 2011 00:26:31 +0800</pubDate><author>creke</author><comments>http://blog.creke.net/771.html#comments</comments><guid isPermaLink="false">http://blog.creke.net/771.html</guid><dc:creator>creke</dc:creator><fs:srclink>http://blog.creke.net/771.html</fs:srclink><fs:srcfeed>http://blog.creke.net/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/creke/~7908793/597602848/6018541</fs:itemid></item></channel></rss>
