<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WilliamGates Blog &#187; WordPress</title>
	<atom:link href="http://blog.williamgates.biz/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.williamgates.biz</link>
	<description>四片叶子的三叶草</description>
	<lastBuildDate>Fri, 11 Nov 2011 14:32:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>让WordPress的私有文章（private post）所属的tags和categories显示出来</title>
		<link>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/</link>
		<comments>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 08:23:21 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=182</guid>
		<description><![CDATA[　　Wordpress有private post的功能，但是一个post一旦作为private被save而不是public，则不会在数据库中进行计数（不算在已发的文章中）。这里讨论了这个问题。 　　现在问题在于，如果一个tag或者category只含有private post，那么它的计数是0，被认为是不含有文章从而不会被显示出来，哪怕是登录以后有权限看private post的情况下也是如此。这里，Wordpress的support forum的一个Moderator建议应该修改wp-includes中的taxonomy.php里的此处 function _update_post_term_count&#40; $terms &#41; &#123; global $wpdb; &#160; foreach &#40; &#40;array&#41; $terms as $term &#41; &#123; $count = $wpdb-&#62;get_var&#40; $wpdb-&#62;prepare&#40; &#34;SELECT COUNT(*) FROM $wpdb-&#62;term_relationships, $wpdb-&#62;posts WHERE $wpdb-&#62;posts.ID = $wpdb-&#62;term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d&#34;, $term &#41; &#41;; $wpdb-&#62;update&#40; $wpdb-&#62;term_taxonomy, compact&#40; 'count' &#41;, [...]]]></description>
			<content:encoded><![CDATA[<p>　　Wordpress有private post的功能，但是一个post一旦作为private被save而不是public，则不会在数据库中进行计数（不算在已发的文章中）。<a href="http://trac.wordpress.org/ticket/5270">这里</a>讨论了这个问题。<br />
　　现在问题在于，如果一个tag或者category只含有private post，那么它的计数是0，被认为是不含有文章从而不会被显示出来，哪怕是登录以后有权限看private post的情况下也是如此。<a href="http://wordpress.org/support/topic/221210">这里</a>，Wordpress的support forum的一个Moderator建议应该修改wp-includes中的taxonomy.php里的此处</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> _update_post_term_count<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$terms</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$terms</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_var</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;SELECT COUNT(*) FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_relationships</span>, <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> WHERE <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span>.ID = <span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_relationships</span>.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = <span style="color: #009933; font-weight: bold;">%d</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">update</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">term_taxonomy</span><span style="color: #339933;">,</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'count'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'term_taxonomy_id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　看起来似乎在 <code>post_status = 'publish'</code> 后面加一个 <code>OR post_status = 'private'</code> 就行了，但实际上没效果。为什么呢？这是往数据库中写的时候用来计数的，不是用来显示的；当我们已经有private post，修改这里并不会让本来被认为是空着的tag和category变得有数字。<br />
<span id="more-182"></span><br />
　　解决方案在<a href="http://wordpress.org/support/topic/175406">这里</a>，修改wp-includes中的category-template.php，<code>function wp_tag_cloud( $args = '' )</code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tags</span> <span style="color: #339933;">=</span> get_tags<span style="color: #009900;">&#40;</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$args</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'count'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'DESC'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Always query top tags</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tags</span> <span style="color: #339933;">=</span> get_tags<span style="color: #009900;">&#40;</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hide_empty'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'count'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Always query top tags</span></pre></div></div>

<p>　　也就是给 <code>get_tags()</code> （这其实是taxonomy.php里 <code>get_term()</code> 的一个封装，所以参数也一样)加上一个参数 <code>'hide_empty' => 0</code> ，即显示被认为是空的tag。<br />
　　category也一样做就可以了，同样是category-template.php里，修改 <code>function wp_list_categories( $args = '' ) </code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$defaults</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'show_option_all'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'name'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ASC'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'show_last_update'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'style'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'list'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'show_count'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'hide_empty'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'use_desc_for_title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'child_of'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'feed'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'feed_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'feed_image'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'exclude'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_category'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'hierarchical'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title_li'</span> <span style="color: #339933;">=&gt;</span> __<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Categories'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'echo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'depth'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　把 <code>'hide_empty' => 1</code> 改成0即可。<br />
　　当然，如果需要只让有权限看private post的用户看到这些变化，只要给前面两处修改加上 <code>if(current_user_can("read_private_posts")) </code> 这样的判断就行了。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress+WP-SuperCache之中文tag的Permalink问题全解析</title>
		<link>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/</link>
		<comments>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 04:50:17 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=152</guid>
		<description><![CDATA[　　WordPress的中文支持有问题，特别是在使用Permalink的时候，这个大家都知道。本文将分析其中的原因和网上流传的多种解决方案，并给出一个具体的解决结论。 　　这个问题主要表现为，在默认情况下，Wordpress对于形如这样的链接（链接1）： 　　 www.example.com/tag/中文 　　不能正常访问，会产生404或500错误，或者其他的错误。 　　而对于这样的链接（链接2）： 　　 www.example.com/?tag=中文 　　WordPress就能够正确解析。 　　原因：参见这篇文章和这篇文章，这是URL编码问题造成的。对于上面的链接1，这是一个PathInfo，对于链接2，这是一个QueryString。事实证明，对于UTF-8的页面，IE和FF都会正确发送PathInfo和QueryString（而不像有些文章中说的，他们在不同的设置下会有错误的反应），但服务器端，IIS会将PathInfo转换成GBK编码从而造成错误，于是Windows下的此类问题只需要转回来就行了；但是Linux下，Apache不支持中文PathInfo，要么通过这篇文章中的方法来对Apache进行改造，要么只能像我一样，Linux主机无法使用中文permalink。于是，我们只能寻找绕路的方法。 　　解决方案分析： 　　一、转换编码（参见这篇文章） 　　原理是，IIS会将PathInfo中的UTF-8转换成GBK，而QueryString中就不会转换，故而为了使用Permalink，采用以下方法： 　　打开wp-includesclasses.php文件，找到第44行和第50行： if &#40; isset&#40;$_SERVER&#91;'PATH_INFO'&#93;&#41; &#41; $pathinfo = $_SERVER&#91;'PATH_INFO'&#93;; else $pathinfo = ''; $pathinfo_array = explode&#40;'?', $pathinfo&#41;; $pathinfo = str_replace&#40;&#34;%&#34;, &#34;%25&#34;, $pathinfo_array&#91;0&#93;&#41;; $req_uri = $_SERVER&#91;'REQUEST_URI'&#93;; 改为 if &#40; isset&#40;$_SERVER&#91;'PATH_INFO'&#93;&#41; &#41; $pathinfo = mb_convert_encoding&#40;$_SERVER&#91;'PATH_INFO'&#93;, &#34;UTF-8&#34;, &#34;GBK&#34;&#41;; else $pathinfo = ''; $pathinfo_array = explode&#40;'?', $pathinfo&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>　　WordPress的中文支持有问题，特别是在使用Permalink的时候，这个大家都知道。本文将分析其中的原因和网上流传的多种解决方案，并给出一个具体的解决结论。<br />
　　这个问题主要表现为，在默认情况下，Wordpress对于形如这样的链接（链接1）：<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/tag/中文</pre></div></div>

<p>　　不能正常访问，会产生404或500错误，或者其他的错误。<br />
　　而对于这样的链接（链接2）：<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/?tag=中文</pre></div></div>

<p>　　WordPress就能够正确解析。</p>
<p>　　原因：参见<a href="http://akun-007.javaeye.com/blog/222624">这篇文章</a>和这篇文章，这是URL编码问题造成的。对于上面的链接1，这是一个PathInfo，对于链接2，这是一个QueryString。事实证明，对于UTF-8的页面，IE和FF都会正确发送PathInfo和QueryString（而不像有些文章中说的，他们在不同的设置下会有错误的反应），但服务器端，IIS会将PathInfo转换成GBK编码从而造成错误，于是Windows下的此类问题只需要转回来就行了；但是Linux下，Apache不支持中文PathInfo，要么通过<a href="http://www.iceboy.cn/show-15-1.html">这篇文章</a>中的方法来对Apache进行改造，要么只能像我一样，<strong>Linux主机无法使用中文permalink</strong>。于是，我们只能寻找绕路的方法。<br />
<span id="more-152"></span><br />
　　解决方案分析：<br />
　　一、转换编码（参见<a href="http://www.bolarn.com/index.php/2008/01/26/52/">这篇文章</a>）<br />
　　原理是，IIS会将PathInfo中的UTF-8转换成GBK，而QueryString中就不会转换，故而为了使用Permalink，采用以下方法：<br />
　　打开wp-includesclasses.php文件，找到第44行和第50行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'?'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;%&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;%25&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo_array</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req_uri</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;GBK&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'?'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;%&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;%25&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo_array</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req_uri</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;GBK&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　局限：只对Windows主机、且必须是Windows下的IIS主机有效。</p>
<p>　　二、修改rewrite.php（参见<a href="http://www.allove.org/index.php/archives/wordpress-tags.html">这篇文章</a>）<br />
　　这是网上最常见的方法，原理是，让WordPress在对其他内容使用Permalink的时候，对tag不使用，而使用链接2的QueryString模式发送中文编码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> get_tag_permastruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//-----this line need change------</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span> <span style="color: #339933;">=</span> ”<span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>把第5行改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>　　局限：没有起到Permalink的“漂亮”作用，如果不能自己修改WP的文件就没办法了。</p>
<p>　　三、修改tag base（参见<a href="http://www.myfcys.cn/blog/index.php/2008.05/15">这篇文章</a>，经过我研究改造）<br />
　　原理同上，只要让WordPress在打开了Permalink功能后继续对tag不理不问就行了。那么，欺骗WordPress，让它用链接2的格式来显示Permalink，可行么？可行，因为WordPress可以自定义Permalink的形式：<br />
　　在WordPress的 Settings &#8211; Permalinks &#8211; Tag base 中填上<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>?tag<span style="color: #339933;">=</span></pre></div></div>

<p>　　注意&#8221;"不能少，引用原文中的写法不对。另外要注意每次输入&#8221;"，WP都会再次转义为&#8221;\&#8221;，所以每次点提交都会把&#8221;"翻一倍，点两次就是&#8221;\\&#8221;，所以不要多点，一次就对了。<br />
　　这个方法的结果是使得链接变成这个样子<br />
 　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/?tag=/中文/</pre></div></div>

<p>　　多出来的斜杠对于服务器丝毫没有影响，还是被视为QueryString，效果同上。<br />
　　局限是链接变得更加不好看了，更为致命的是插件生成的Sitemap中，tag链接会变成错误的形式，如果你很在乎Sitemap，请不要使用这个方法，除非你真的无法修改自己的rewrite.php文件。</p>
<p>　　但是当你使用WP-SuperCache或者类似的缓存插件时，它会加入自己的rewrite规则，所有请求先由自己判断，不在缓存中或者不符合缓存规则才交由WordPress处理。但问题在于，它不支持中文URL的解析，哪怕是QueryString也不行。于是我们必须绕过它。<br />
　　这是WP-SuperCache在.htaccess文件里所添加的rewrite规则</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">RewriteEngine On
RewriteBase /
&nbsp;
RewriteCond %<span class="br0">&#123;</span>REQUEST_METHOD<span class="br0">&#125;</span> !=POST
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*s=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*p=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*attachment_id=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*wp-subscription-manager=.*
RewriteCond %<span class="br0">&#123;</span>HTTP_COOKIE<span class="br0">&#125;</span> !^.*<span class="br0">&#40;</span>comment_author_|wordpress|wp-postpass_<span class="br0">&#41;</span>.*$
RewriteCond %<span class="br0">&#123;</span>HTTP:Accept-Encoding<span class="br0">&#125;</span> gzip
RewriteCond %<span class="br0">&#123;</span>DOCUMENT_ROOT<span class="br0">&#125;</span>/wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html.gz -f
RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span> /wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html.gz <span class="br0">&#91;</span>L<span class="br0">&#93;</span>
&nbsp;
RewriteCond %<span class="br0">&#123;</span>REQUEST_METHOD<span class="br0">&#125;</span> !=POST
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*s=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*p=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*wp-subscription-manager=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*attachment_id=.*
RewriteCond %<span class="br0">&#123;</span>HTTP_COOKIE<span class="br0">&#125;</span> !^.*<span class="br0">&#40;</span>comment_author_|wordpress|wp-postpass_<span class="br0">&#41;</span>.*$
RewriteCond %<span class="br0">&#123;</span>DOCUMENT_ROOT<span class="br0">&#125;</span>/wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html -f
RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span> /wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html <span class="br0">&#91;</span>L<span class="br0">&#93;</span></pre></div></div>

<p>　　我们要做的就是不让它去判断中文tag链接，在两个 RewriteCond %{REQUEST_METHOD} !=POST 后面分别加入这样一句：</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*tag=.*</pre></div></div>

<p>　　含义是如果QueryString中含有tag字样，请不要解析（交给下一条规则，一般来说就是WordPress的index.php了）。</p>
<p>　　结论：<br />
　　Windows+IIS主机下，通过方案一可以完美解决中文tag问题<br />
　　Linux+Apache主机下，<strong>不能使用中文Permalink</strong>，除非修改Apache，否则只有用方案二和方案三绕行。<br />
　　方案二是较为推荐的方法，但是搭配WP-SuperCache使用的时候，需要自己在.htaccess文件中加入一条不处理tag链接的规则。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>修改了Blog的permalink</title>
		<link>http://blog.williamgates.biz/2008/08/my-blog-permalink-changed/</link>
		<comments>http://blog.williamgates.biz/2008/08/my-blog-permalink-changed/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 09:35:35 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[折腾]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=143</guid>
		<description><![CDATA[　　正如你所看到的，RSS阅读器里那些过去的按PostID标识的链接已经不起作用；现在的链接全都是年份+月份+PostName的格式。这也是搜索引擎最喜欢的格式。其实我一直都记得修改每一篇文章的PostSlug，然而我一直羞于自己的英文水平，不敢拿出来。经过前几天对于中文tag的折腾，现在我想通了，还是用英文链接最好，那么多米国人用这种链接模式，也都是口语化的，随便几个不能凑成一句话的词也行，比如我这篇的PostName就很口语化。 　　至于搜索引擎以前收录的页面可能也不能访问，各位朋友指向我某篇文章的链接可能也不能访问，管我啥事。 Related posts: 慎改Android的Hosts文件 备份永远不嫌多 在国行双网机（如i909/i809）上使用Android Market购买app研究小结]]></description>
			<content:encoded><![CDATA[<p>　　正如你所看到的，RSS阅读器里那些过去的按PostID标识的链接已经不起作用；现在的链接全都是年份+月份+PostName的格式。这也是搜索引擎最喜欢的格式。其实我一直都记得修改每一篇文章的PostSlug，然而我一直羞于自己的英文水平，不敢拿出来。经过前几天对于中文tag的折腾，现在我想通了，还是用英文链接最好，那么多米国人用这种链接模式，也都是口语化的，随便几个不能凑成一句话的词也行，比如我这篇的PostName就很口语化。<br />
　　至于搜索引擎以前收录的页面可能也不能访问，各位朋友指向我某篇文章的链接可能也不能访问，管我啥事。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/08/my-blog-permalink-changed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>升级WordPress到2.5</title>
		<link>http://blog.williamgates.biz/2008/04/update-wordpress-to-ver25/</link>
		<comments>http://blog.williamgates.biz/2008/04/update-wordpress-to-ver25/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 13:04:48 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[折腾]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=131</guid>
		<description><![CDATA[　　我们可爱可恨的主机商终于解决了MySQL的问题，他们终于肯掏钱往集群里填服务器了……连续大概一个月的巨慢速度终于告别，我也可以升级WordPress了。 　　其实这个Blog的WordPress是在主机速度最慢的时候升级的，另一个Blog才是今天升级的。具体升级步骤我就不说了，网上到处都是，把两次升级的经验并在一起说说吧。 　　一、修改文件 　　解决中文Tag支持的mod依然可用（也就是说WordPress依然不准备解决这个问题），即修改wp-includes目录下的rewrite.php中的 function get_tag_permastruct() 中的 if &#40;empty&#40;$this-&#62;permalink_structure&#41;&#41; &#123; 改为 if &#40;!empty&#40;$this-&#62;permalink_structure&#41;&#41; &#123; 　　我自创的“让text widget在标题中显示图标”，需要有一些改变： wp-includes目录下的widgets.php中的 function wp_widget_text_control($widget_args) 中的 $title = strip_tags&#40;stripslashes&#40;$widget_text&#91;'title'&#93;&#41;&#41;; 改为 $title = stripslashes&#40;$widget_text&#91;'title'&#93;&#41;; 而把这句 $title = attribute_escape&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 改为 $title = format_to_edit&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 　　可以看出来，函数的参数和语句都与2.3.3不同了。 　　二、自动升级插件 　　这个插件叫做wordpress-automatic-upgrade，它可以大幅度简化你升级WordPress的过程，对我们这种上传下载都缓慢的国内用户更是如此。 　　它的全部操作都在WordPress的控制面板中完成，只要激活该插件，然后在Manage的wordpress automatic upgrade项里一直点下一步就好了。它会自动备份好你的文件、数据库并提供链接给你下载；会自动禁用你的所有插件、关闭你的blog并且自动下载最新版本的wordpress，更新所有的文件，最后恢复所有的插件和被暂时关闭的blog。一切都按照指引做就好了，完全不用从FTP上传下载任何东西，非常方便快捷。 　　要注意的是，它的备份文件功能只备份WordPress本身的文件，也就是说不包括content目录。你自己上传的插件、图片和其他内容还请自己下载备份。 　　好了，来享用你的WP 2.5吧，我觉得最好用的功能是插件自动升级和tag管理，另外后台管理界面的大变脸让人觉得很不错，并且后台似乎也加上了一定的缓存，可能是SQL查询缓存等，后台的速度和整个网站的速度都有一定提高。 Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　我们可爱可恨的主机商终于解决了MySQL的问题，他们终于肯掏钱往集群里填服务器了……连续大概一个月的巨慢速度终于告别，我也可以升级WordPress了。<br />
　　其实这个Blog的WordPress是在主机速度最慢的时候升级的，另一个Blog才是今天升级的。具体升级步骤我就不说了，网上到处都是，把两次升级的经验并在一起说说吧。</p>
<p>　　一、修改文件<br />
　　解决中文Tag支持的mod依然可用（也就是说WordPress依然不准备解决这个问题），即修改wp-includes目录下的rewrite.php中的 <code>function get_tag_permastruct()</code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>　　我自创的<a href="http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/">“让text widget在标题中显示图标”</a>，需要有一些改变：<br />
<span id="more-131"></span><br />
wp-includes目录下的widgets.php中的 <code>function wp_widget_text_control($widget_args)</code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$widget_text</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$widget_text</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>而把这句</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> attribute_escape<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> format_to_edit<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　可以看出来，函数的参数和语句都与2.3.3不同了。</p>
<p>　　二、自动升级插件<br />
　　这个插件叫做<a href="http://wordpress.org/extend/plugins/wordpress-automatic-upgrade/">wordpress-automatic-upgrade</a>，它可以大幅度简化你升级WordPress的过程，对我们这种上传下载都缓慢的国内用户更是如此。<br />
　　它的全部操作都在WordPress的控制面板中完成，只要激活该插件，然后在Manage的wordpress automatic upgrade项里一直点下一步就好了。它会自动备份好你的文件、数据库并提供链接给你下载；会自动禁用你的所有插件、关闭你的blog并且自动下载最新版本的wordpress，更新所有的文件，最后恢复所有的插件和被暂时关闭的blog。一切都按照指引做就好了，完全不用从FTP上传下载任何东西，非常方便快捷。<br />
　　要注意的是，它的备份文件功能只备份WordPress本身的文件，也就是说不包括content目录。你自己上传的插件、图片和其他内容还请自己下载备份。</p>
<p>　　好了，来享用你的WP 2.5吧，我觉得最好用的功能是插件自动升级和tag管理，另外后台管理界面的大变脸让人觉得很不错，并且后台似乎也加上了一定的缓存，可能是SQL查询缓存等，后台的速度和整个网站的速度都有一定提高。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/04/update-wordpress-to-ver25/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>虚拟主机空间打开Zend Optimizer的相关问题</title>
		<link>http://blog.williamgates.biz/2008/03/enable-zend-optimizer-for-website-host/</link>
		<comments>http://blog.williamgates.biz/2008/03/enable-zend-optimizer-for-website-host/#comments</comments>
		<pubDate>Sun, 23 Mar 2008 04:48:38 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[IPowerWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/03/23/130</guid>
		<description><![CDATA[　　还记得我在这篇文章里提到过IPowerWeb的空间不支持php5打开Zend Optimizer么？现在看起来是我搞错了，但是IPowerWeb给的默认值是不打开Zend Optimizer的，就是因为这一点害得我研究了半天。 　　首先，由于IPowerWeb的MySQL主机前一段时间的问题，数据库访问慢得要命，我不得不把环境换成php5，换上WordPress的mysqli数据库连接，于是我面临在php5下面打开Zend Optimizer的挑战。挑战在于，由于服务商没有提供默认打开Zend Optimizer的配置文件，我根本不知道Zend Optimizer的路径…… 　　首先，尝试用php4环境下的IPower提供的默认配置文件，内容是 &#91;Zend&#93; zend_optimizer.optimization_level=15 zend_optimizer.encoder_loader=0 zend_extension_manager.optimizer=/usr/local/Zend/Zend-2.5.7/lib/Optimizer-2.5.7 zend_extension_manager.optimizer_ts=/usr/local/Zend/Zend-2.5.7/lib/Optimizer_TS-2.5.7 zend_extension=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager.so zend_extension_ts=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager_TS.so 　　从phpinfo的显示来看，似乎是成功了，但是总觉得不爽，总觉得哪里有问题。 　　突然想到一招，用phpspy可以看到自己主机空间的其他目录，而不是被chroot在自己的根目录里。果然，进入/usr/local/Zend/，看到Zend-2.5.7，Zend-2.6.2，lib等目录。进入lib，发现有各个版本的Optimizer目录，这些目录下还有对应不同php版本的目录。于是就简单了，查一查zend_extension和zend_extension_manager.optimizer这两个设置项的含义就明白了，zend_extension是为了引用extension_manager，而zend_extension_manager.optimizer指示extension_manager调用Zend Optimizer。于是我写上 &#91;Zend&#93; zend_optimizer.optimization_level=511 zend_optimizer.encoder_loader=0 zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.2.0 zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.2.0 　　那个511是我个人觉得合适的值，这个值的含义很容易搜到，就不详述了。注意zend_extension_manager.optimizer不能写到具体的.so文件，只能写到相应版本的Optimizer目录，连下面的php版本对应的目录都不能写进去。 　　事实证明，IPowerWeb提供的php4环境下的默认值虽然能用，但也不如我上面这个来得好。上面这个对php4和5都通用。 　　最后你应该看到phpinfo里面有这样的内容（版本可能有不同） This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies 　　with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by [...]]]></description>
			<content:encoded><![CDATA[<p>　　还记得我在<a href="http://blog.williamgates.biz/2008/02/goodbye-icp-records-06/">这篇文章</a>里提到过IPowerWeb的空间不支持php5打开Zend Optimizer么？现在看起来是我搞错了，但是IPowerWeb给的默认值是不打开Zend Optimizer的，就是因为这一点害得我研究了半天。</p>
<p>　　首先，由于IPowerWeb的MySQL主机前一段时间的问题，数据库访问慢得要命，我不得不把环境换成php5，换上<a href="http://michaelshadle.com/category/development/wordpress/">WordPress的mysqli数据库连接</a>，于是我面临在php5下面打开Zend Optimizer的挑战。挑战在于，由于服务商没有提供默认打开Zend Optimizer的配置文件，我根本不知道Zend Optimizer的路径……<br />
<span id="more-130"></span><br />
　　首先，尝试用php4环境下的IPower提供的默认配置文件，内容是</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span class="br0">&#91;</span>Zend<span class="br0">&#93;</span>
zend_optimizer.optimization_level=<span style="color: #cc66cc;">15</span>
zend_optimizer.encoder_loader=<span style="color: #cc66cc;">0</span>
zend_extension_manager.optimizer=/usr/local/Zend/Zend-2.5.7/lib/Optimizer-2.5.7
zend_extension_manager.optimizer_ts=/usr/local/Zend/Zend-2.5.7/lib/Optimizer_TS-2.5.7
zend_extension=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager_TS.so</pre></div></div>

<p>　　从phpinfo的显示来看，似乎是成功了，但是总觉得不爽，总觉得哪里有问题。</p>
<p>　　突然想到一招，用<a href="http://www.4ngel.net/project/phpspy.htm">phpspy</a>可以看到自己主机空间的其他目录，而不是被chroot在自己的根目录里。果然，进入/usr/local/Zend/，看到Zend-2.5.7，Zend-2.6.2，lib等目录。进入lib，发现有各个版本的Optimizer目录，这些目录下还有对应不同php版本的目录。于是就简单了，查一查zend_extension和zend_extension_manager.optimizer这两个设置项的含义就明白了，zend_extension是为了引用extension_manager，而zend_extension_manager.optimizer指示extension_manager调用Zend Optimizer。于是我写上</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span class="br0">&#91;</span>Zend<span class="br0">&#93;</span>
zend_optimizer.optimization_level=<span style="color: #cc66cc;">511</span>
zend_optimizer.encoder_loader=<span style="color: #cc66cc;">0</span>
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.2.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.2.0</pre></div></div>

<p>　　那个511是我个人觉得合适的值，这个值的含义很容易搜到，就不详述了。注意zend_extension_manager.optimizer不能写到具体的.so文件，只能写到相应版本的Optimizer目录，连下面的php版本对应的目录都不能写进去。<br />
　　事实证明，IPowerWeb提供的php4环境下的默认值虽然能用，但也不如我上面这个来得好。上面这个对php4和5都通用。<br />
　　最后你应该看到phpinfo里面有这样的内容（版本可能有不同）</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
　　with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
　　with Zend Optimizer v3.2.0, Copyright (c) 1998-2006, by Zend Technologies</pre></div></div>

<p>　　这样就大功告成了。</p>
<p>　　所以以后如果虚拟主机有什么扩展软件等需要查询安装地址（例如<a href="http://www.imagemagick.org">ImageMagicK</a>），就用phpspy上到主机的根目录去查查路径就好了。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/03/enable-zend-optimizer-for-website-host/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(六)虚拟主机的其他应用以及与IPowerWeb空间的php.ini相关的各种问题</title>
		<link>http://blog.williamgates.biz/2008/02/goodbye-icp-records-06/</link>
		<comments>http://blog.williamgates.biz/2008/02/goodbye-icp-records-06/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 06:45:27 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[IPowerWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/02/01/121</guid>
		<description><![CDATA[　　买了虚拟主机，除了放Blog，还可以做些什么用？IPowerWeb的空间看起来还不错，用起来有哪些毛病，怎么解决？下面我们来讲这些问题。 　　一、虚拟主机的其他应用 　　除了Blog，php空间当然可以有点别的用处，比如： 　　1、网盘 　　1500G容量的空间，当然可以用来存放点东西，但是php下的网盘程序或者是文件分享程序（区别在于是否提供提取码，供别人下载），基本上没有特别著名和权威的。 　　如果要用有提取码的，我推荐使用“拓网文件上传共享系统V1.0”（该公司现在似乎已经遗忘了这个php产品，已经全面转向asp产品了），这个东西的免费版可以从网上随意下到，但是不支持用户管理（也就是谁都可以上传，建议在上传页面用.htaccess文件设一个密码）。它提供了上传、管理文件和提取码的功能。 　　如果只是要一个自己保存文件的东西，这个更适合：Uploader，搜索“Uploader Samoa汉化版”即可下载到。这个提供了用户管理，但是不提供给别人下载的功能，只是自己使用而已；但是你可以通过直接提供地址、或者使用WordPress的WP-DownloadManager插件来实现类似于提取的下载。 　　注意，要上传文件，请确保php.ini中的file_uploads为ON，并且以下几项最好达到或者超过我所说的数值： max_execution_time = 600 max_input_time = 180 memory_limit = 64M post_max_size = 210M upload_max_filesize = 200M 　　2、WebFTP 　　顾名思义就是在网页上使用的FTP软件，但是我高估了它的作用，以为”保存到本地“的功能意味着可以”保存到服务器“，结果在服务器上安装之后，发现还是只能下载到我的电脑上，实现”从一台服务器下载另一台服务器的文件“还需要别的方法（下面会说）。 　　虽然如此，但精致的界面和功能还是让我想要推荐一下这个软件：net2ftp，我觉得其实可以在校园网或者单位内网安装这个东西，可以省去大部分人使用FTP客户端的麻烦。 　　3、文件转移 　　我想从英国的主机商那里把我以前上传的一些文件转移过来（好几G，下载到本地再上传到美国估计要几天时间），条件是： 两台主机之间对传很快，控制者（我）进行中转则很慢 两者的FTP都不支持FXP 两者都是php空间，所有的文件都可以通过http或者FTP来下载 两者都不提供SSH 　　这种时候应该怎么让做呢？首先想到的是上面那个网页FTP，但是不如人愿；然后想到的是利用Cron来调用wget，但是IPower控制面板中的Cron似乎在权限上做了一点限制（或者是我不会用吧），未能成功；第三想到的是利用php调用系统命令，或者php自己的下载功能来下载，但我是php代码盲，看懂一半还行，写几乎一句都写不出来，所以决定上网寻找已经做好的工具……还真有 　　（1）Rapidget（也叫a2b) 　　这个玩意明确写着唯一的功能就是在一个服务器上，从另一个服务器下载文件……非常小巧，但做得很不错，能自己选择保存路径、能使用代理、还有进度条，唯一的问题是它是基于php的自身函数来下载文件的，所以受php.ini中文件大小、运行时间和内存等的限制。由于网上已经很难下载到，连作者都不提供下载了，所以我放上来给大家。 　　（2）PhpSpy 　　这是一个php后门程序，可以管理文件，最重要的是可以执行命令。所以把这个程序上传，并且上传一个URL.dat的要下载文件的文件名列表（用FTPRush在源FTP上列出），用 wget -i URL.dat -B http://Example.com/example/ 　　就好了，其中-i表示从文件读取要下载的文件链接；-B从文件读取的链接需要加上前缀（因为我在URL.dat里只放了文件名）。这个方法比前一个方法更适合于下载大量文件，而且由于调用系统命令，不受php的内存等限制。但过于多的文件还是要考虑超时问题，建议把php.ini中的超时设长一点，并且以此不要下载太多的文件。下载地址http://www.4ngel.net/ 　　我就是用了这第二种方法，一个小时不到就把4G多的文件转移过来了。两者之间对传的速度超过2M/s（Rapidget测的）。 　　当然，php空间可以装论坛、CMS等各种玩意，这些东西网上广为流传，我这里就不介绍了。 　　二、IPowerWeb空间的Bug 　　1、Zend问题 　　我知道旧版本的Zend和php5不兼容，所以当你选择php版本为php5的时候，默认的php.ini文件中没有Zend一项，而且IPower提供的Zend模块也不够新，加上了Zend的内容估计也不能运行。 　　但是php4默认不开Zend也太不够厚道了，但是当你选了php5再改回php4的时候，默认的文件就有Zend这一项了，我也不知道怎么搞的……反正无论如何，如果你发现自己的站点没有打开Zend，在php.ini的末尾加入以下内容（路径仅适用于IPowerWeb的虚拟主机，其他空间请自行修改路径） &#91;Zend&#93; zend_optimizer.optimization_level=15 zend_extension_manager.optimizer=/usr/local/Zend/Zend-2.5.7/lib/Optimizer-2.5.7 zend_extension_manager.optimizer_ts=/usr/local/Zend/Zend-2.5.7/lib/Optimizer_TS-2.5.7 zend_extension=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager.so [...]]]></description>
			<content:encoded><![CDATA[<p>　　买了虚拟主机，除了放Blog，还可以做些什么用？IPowerWeb的空间看起来还不错，用起来有哪些毛病，怎么解决？下面我们来讲这些问题。</p>
<p>　　一、虚拟主机的其他应用<br />
　　除了Blog，php空间当然可以有点别的用处，比如：</p>
<p>　　1、网盘<br />
　　1500G容量的空间，当然可以用来存放点东西，但是php下的网盘程序或者是文件分享程序（区别在于是否提供提取码，供别人下载），基本上没有特别著名和权威的。<br />
　　如果要用有提取码的，我推荐使用“拓网文件上传共享系统V1.0”（<a href="http://www.topwang.com/">该公司</a>现在似乎已经遗忘了这个php产品，已经全面转向asp产品了），这个东西的免费版可以从网上随意下到，但是不支持用户管理（也就是谁都可以上传，建议在上传页面用.htaccess文件设一个密码）。它提供了上传、管理文件和提取码的功能。<br />
　　如果只是要一个自己保存文件的东西，这个更适合：Uploader，搜索“Uploader Samoa汉化版”即可下载到。这个提供了用户管理，但是不提供给别人下载的功能，只是自己使用而已；但是你可以通过直接提供地址、或者使用WordPress的<a href="http://lesterchan.net/portfolio/programming.php">WP-DownloadManager</a>插件来实现类似于提取的下载。<br />
　　注意，要上传文件，请确保php.ini中的<code>file_uploads</code>为ON，并且以下几项最好达到或者超过我所说的数值：</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">max_execution_time = <span style="color: #cc66cc;">600</span>
max_input_time = <span style="color: #cc66cc;">180</span>
memory_limit = 64M
post_max_size = 210M
upload_max_filesize = 200M</pre></div></div>

<p>　　2、WebFTP<br />
　　顾名思义就是在网页上使用的FTP软件，但是我高估了它的作用，以为”保存到本地“的功能意味着可以”保存到服务器“，结果在服务器上安装之后，发现还是只能下载到我的电脑上，实现”从一台服务器下载另一台服务器的文件“还需要别的方法（下面会说）。<br />
　　虽然如此，但精致的界面和功能还是让我想要推荐一下这个软件：<a href="http://www.net2ftp.com/">net2ftp</a>，我觉得其实可以在校园网或者单位内网安装这个东西，可以省去大部分人使用FTP客户端的麻烦。<br />
<span id="more-121"></span><br />
　　3、文件转移<br />
　　我想从英国的主机商那里把我以前上传的一些文件转移过来（好几G，下载到本地再上传到美国估计要几天时间），条件是：
<ul>
<li>两台主机之间对传很快，控制者（我）进行中转则很慢</li>
<li>两者的FTP都不支持FXP</li>
<li>两者都是php空间，所有的文件都可以通过http或者FTP来下载</li>
<li>两者都不提供SSH</li>
</ul>
<p>　　这种时候应该怎么让做呢？首先想到的是上面那个网页FTP，但是不如人愿；然后想到的是利用Cron来调用wget，但是IPower控制面板中的Cron似乎在权限上做了一点限制（或者是我不会用吧），未能成功；第三想到的是利用php调用系统命令，或者php自己的下载功能来下载，但我是php代码盲，看懂一半还行，写几乎一句都写不出来，所以决定上网寻找已经做好的工具……还真有<br />
　　（1）Rapidget（也叫a2b)<br />
　　这个玩意明确写着唯一的功能就是在一个服务器上，从另一个服务器下载文件……非常小巧，但做得很不错，能自己选择保存路径、能使用代理、还有进度条，唯一的问题是它是基于php的自身函数来下载文件的，所以受php.ini中文件大小、运行时间和内存等的限制。由于网上已经很难下载到，连作者都不提供下载了，所以我放上来给大家。Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>　　（2）PhpSpy<br />
　　这是一个php后门程序，可以管理文件，最重要的是可以执行命令。所以把这个程序上传，并且上传一个URL.dat的要下载文件的文件名列表（用FTPRush在源FTP上列出），用</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-i</span> URL.dat <span style="color: #660033;">-B</span> http:<span style="color: #000000; font-weight: bold;">//</span>Example.com<span style="color: #000000; font-weight: bold;">/</span>example<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>　　就好了，其中-i表示从文件读取要下载的文件链接；-B从文件读取的链接需要加上前缀（因为我在URL.dat里只放了文件名）。这个方法比前一个方法更适合于下载大量文件，而且由于调用系统命令，不受php的内存等限制。但过于多的文件还是要考虑超时问题，建议把php.ini中的超时设长一点，并且以此不要下载太多的文件。下载地址http://www.4ngel.net/<br />
　　我就是用了这第二种方法，一个小时不到就把4G多的文件转移过来了。两者之间对传的速度超过2M/s（Rapidget测的）。</p>
<p>　　当然，php空间可以装论坛、CMS等各种玩意，这些东西网上广为流传，我这里就不介绍了。</p>
<p>　　二、IPowerWeb空间的Bug<br />
　　1、Zend问题<br />
　　我知道旧版本的Zend和php5不兼容，所以当你选择php版本为php5的时候，默认的php.ini文件中没有Zend一项，而且IPower提供的Zend模块也不够新，加上了Zend的内容估计也不能运行。<br />
　　但是php4默认不开Zend也太不够厚道了，但是当你选了php5再改回php4的时候，默认的文件就有Zend这一项了，我也不知道怎么搞的……反正无论如何，如果你发现自己的站点没有打开Zend，在php.ini的末尾加入以下内容（路径仅适用于IPowerWeb的虚拟主机，其他空间请自行修改路径）</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span class="br0">&#91;</span>Zend<span class="br0">&#93;</span>
zend_optimizer.optimization_level=<span style="color: #cc66cc;">15</span>
zend_extension_manager.optimizer=/usr/local/Zend/Zend-2.5.7/lib/Optimizer-2.5.7
zend_extension_manager.optimizer_ts=/usr/local/Zend/Zend-2.5.7/lib/Optimizer_TS-2.5.7
zend_extension=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/Zend-2.5.7/lib/ZendExtensionManager_TS.so</pre></div></div>

<p>　　2、phpMyAdmin问题<br />
　　IPowerWeb空间的瓶颈似乎在Web服务器和MySQL服务器之间的连接，从Web服务器登录数据库实在是缓慢，导致装在Web服务器中的phpMyAdmin（比如WordPress的WP-phpMyAdmin插件）几乎从来不能正常运行。我的建议是：一、用IPower控制面板中的那个phpMyAdmin，反正默认都是UTF8，用起来也没啥问题；二、像我一样喜欢追求新版本的，请自行修改php.ini以提供够大的内存和够长的超时时间……(要修改的条目前面已经说过了）</p>
<p>　　3、Session问题<br />
　　这是最致命的问题，当你装上我这里提到的Uploader，”拓网上传系统“和WP-phpMyAdmin之后会发现，前者如果不记录登陆状况就会自动跳出，后两者根本无法登陆，我仔细研究发现是session无法启用的问题。但是上网搜遍了，都说session问题是php.ini中配置的问题，但是这么专业的公司怎么会在默认配置文件中写错呢？<br />
　　事实证明，不要迷信权威，要自己试验，我把[Session]节中的session.save_path由默认的var/tmp-sessions(好象是这个，忘了）改成了我在虚拟主机的web根目录下建的一个目录，并且把权限改为777，果然能用了！看来，要在IPower空间中使用session，请自行建立一个目录并且把完整地址（控制面板中左栏显示的很长的那个Linux下的完整地址）设为session.save_path。</p>
<p>　　至此，整个IPowerWeb空间已经搞定，我的Blog也运行自如了，最后一集是感慨和废话……敬请期待。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/02/goodbye-icp-records-06/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(五)WordPress的优化、修复、备份和其他技巧</title>
		<link>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/</link>
		<comments>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 05:09:44 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/02/01/120</guid>
		<description><![CDATA[　　经过前几篇的过程，现在的WordPress已经能正常使用了，但是也许我们还需要进一步优化一下，解决一些问题。 　　一、WordPress的非必要插件 　　主要是指对Blog进行美化或者SEO的插件，我用了以下几个： All in One SEO Pack：通过自动修改你的页面title，自动添加meta等功能来实现搜索引擎优化 Google XML Sitemaps：通过自动生成XML Sitemaps（不仅仅针对Google）而对搜索引擎进行优化 WP-DownloadManager：非常强大的下载管理工具，我最喜欢的功能是可以随意添加服务器上存在的文件进行管理（从而不必通过http上传，FTP上传也可）；生成统一的下载页面等等 　　Blog的人气除了来自于朋友的访问，搜索引擎也是很重要的一点，我的Blog就常年有一半左右的访问来自Google的链接，主要关键字是Squid和百合驿站 :) 　　二、WordPress的复杂化 　　什么是复杂化，看到classicning的blog你就明白了……这里指的就是添加各种widgets，在WordPress 2.3中，通过后台管理方便地添加widgets已经是不需要任何技术的事情，但是你想不想让各网站的widgets以及你blog内置的widgets风格统一？请看几点注意事项： 　　1、内置>Javascript>Flash 　　对于web2.0网站，往往提供Flash和Javascript的widgets，但是由于新版本的Flash浏览器插件的安全设置，一般的嵌入方法会导致出现一层虚框，既影响美观又可能导致页面排版问题，而特殊的嵌入方法不仅麻烦，兼容也可能有一点点小问题。所以尽量使用内置的RSS widget达到你要的效果（如饭否就提供消息的RSS，直接用内置RSS widget读取最好），如果rss不能满足你的需要（例如饭否的“好友信息“，我现在用的就是），或者根本不提供rss（例如豆瓣），非要嵌入该网站自己的widget的时候，请尽量使用Javascript的版本。 　　2、注意网站widget的格式 　　很多网站（例如豆瓣）都提供了自定义widget的功能，这里要注意配置好自己的widget，要和sidebar风格协调统一，例如底色、长宽等。我现在的豆瓣插件就设置成尽量长宽和sidebar协调，看起来比classicning那个就要舒服一些…… 　　3、修改代码让text widget显示图标 　　想像我一样让各个网站的图标显示在WordPress内置的text widget的标题中？请打开wp-includes下的widgets.php文件（建议用WordPress自己的编辑工具），修改这个函数 function wp_widget_text_control($number) 的内容，把 $newoptions&#91;$number&#93;&#91;'title'&#93; = strip_tags&#40;stripslashes&#40;$_POST&#91;&#34;text-title-$number&#34;&#93;&#41;&#41;; 改为 $newoptions&#91;$number&#93;&#91;'title'&#93; = stripslashes&#40;$_POST&#91;&#34;text-title-$number&#34;&#93;&#41;; 把 $title = attribute_escape&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 改为 $title = format_to_edit&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 　　试试看，在text widget的标题中，输入 &#60;img src='你的ico文件地址' /&#62; 你需要的标题（例如 ”WilliamGates的豆瓣”） 　　就可以显示图标了。图标可以通过用FireFox打开该网站，右键点击页面，选”查看页面信息“里面的”媒体“来获得。 　　三、WordPress的修复 [...]]]></description>
			<content:encoded><![CDATA[<p>　　经过前几篇的过程，现在的WordPress已经能正常使用了，但是也许我们还需要进一步优化一下，解决一些问题。</p>
<p>　　一、WordPress的非必要插件<br />
　　主要是指对Blog进行美化或者SEO的插件，我用了以下几个：
<ul>
<li><a href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/">All in One SEO Pack</a>：通过自动修改你的页面title，自动添加meta等功能来实现搜索引擎优化</li>
<li><a href="http://www.arnebrachhold.de/redir/sitemap-home/">Google XML Sitemaps</a>：通过自动生成XML Sitemaps（不仅仅针对Google）而对搜索引擎进行优化</li>
<li><a href="http://lesterchan.net/portfolio/programming.php">WP-DownloadManager</a>：非常强大的下载管理工具，我最喜欢的功能是可以随意添加服务器上存在的文件进行管理（从而不必通过http上传，FTP上传也可）；生成统一的下载页面等等</li>
</ul>
<p>　　Blog的人气除了来自于朋友的访问，搜索引擎也是很重要的一点，我的Blog就常年有一半左右的访问来自Google的链接，主要关键字是Squid和百合驿站 :)</p>
<p>　　二、WordPress的复杂化<br />
　　什么是复杂化，看到<a href="http://www.classicning.com/blog/">classicning</a>的blog你就明白了……这里指的就是添加各种widgets，在WordPress 2.3中，通过后台管理方便地添加widgets已经是不需要任何技术的事情，但是你想不想让各网站的widgets以及你blog内置的widgets风格统一？请看几点注意事项：<br />
<span id="more-120"></span><br />
　　1、内置>Javascript>Flash<br />
　　对于web2.0网站，往往提供Flash和Javascript的widgets，但是由于新版本的Flash浏览器插件的安全设置，一般的嵌入方法会导致出现一层虚框，既影响美观又可能导致页面排版问题，而特殊的嵌入方法不仅麻烦，兼容也可能有一点点小问题。所以尽量使用内置的RSS widget达到你要的效果（如饭否就提供消息的RSS，直接用内置RSS widget读取最好），如果rss不能满足你的需要（例如<a href="http://www.fanfou.com">饭否</a>的“好友信息“，我现在用的就是），或者根本不提供rss（例如<a href="http://www.douban.com">豆瓣</a>），非要嵌入该网站自己的widget的时候，请尽量使用Javascript的版本。</p>
<p>　　2、注意网站widget的格式<br />
　　很多网站（例如豆瓣）都提供了自定义widget的功能，这里要注意配置好自己的widget，要和sidebar风格协调统一，例如底色、长宽等。我现在的豆瓣插件就设置成尽量长宽和sidebar协调，看起来比<a href="http://www.classicning.com/blog/">classicning</a>那个就要舒服一些……</p>
<p>　　3、修改代码让text widget显示图标<br />
　　想像我一样让各个网站的图标显示在WordPress内置的text widget的标题中？请打开wp-includes下的widgets.php文件（建议用WordPress自己的编辑工具），修改这个函数 <code>function wp_widget_text_control($number)</code> 的内容，把</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$newoptions</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;text-title-<span style="color: #006699; font-weight: bold;">$number</span>&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$newoptions</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;text-title-<span style="color: #006699; font-weight: bold;">$number</span>&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>把</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> attribute_escape<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> format_to_edit<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　试试看，在text widget的标题中，输入</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'你的ico文件地址'</span> <span style="color: #66cc66;">/</span>&gt;</span> 你需要的标题（例如 ”WilliamGates的豆瓣”）</pre></div></div>

<p>　　就可以显示图标了。图标可以通过用FireFox打开该网站，右键点击页面，选”查看页面信息“里面的”媒体“来获得。</p>
<p>　　三、WordPress的修复<br />
　　昨天<a href="http://www.dlzm.net">DlzM</a>突然告诉我他的blog无法登陆了，进入后台管理就一片空白，页面无输出。我一开始怀疑是UTF8标题的问题（网上搜索都这么说），检查了所有的文件，都是WordPress原版，没有修改的痕迹。在数据库里把blog标题改成英文，也没有效果。DlzM坚持说是他的theme的问题，我就抱着试试看的心理，在数据库里把theme改成了default，没想到真的可以了。<br />
　　国外的很多theme对中文的支持都有问题，而且据说现在开始流行在WordPress Theme中放置恶意代码的阴险行为，所以有人建议大家不要随意下载第三方Theme和Plugin……我的建议是，尽量到这个theme或者plugin的作者网站，或者wordpress.org去下载；下载来之后，看一看head.php里面有没有什么特别的代码，以防万一。</p>
<p>　　四、WordPress的备份<br />
　　有了上次丢数据的惨痛经历，以后决定好好备份WordPress。备份方法有很多种，我推荐这几个一起使用：<br />
　　1、WordPress Database Backup<br />
　　这是一个WordPress的插件，主页在<a href="http://www.ilfilosofo.com/blog/wp-db-backup">www.ilfilosofo.com/blog/wp-db-backup</a>，它会自动加入WordPress的原始表，并且询问你是否要加入统一数据库下面的其他表（主要为其他插件自己建立的表，建议一起备份）；利用WordPress内建的Cron模块，可以定时备份（但有传言说这个功能有Bug，会导致莫名其妙的极高的CPU占用率，慎用）；可以选择备份文件是下载到本地、保存在服务器还是发到邮箱。个人建议手动备份，每个月一次就够了。</p>
<p>　　2、WordPress内建导出功能<br />
　　WordPress自己的导出功能可以导出整个数据库中的文章、留言、分类和Blogroll为一个XML文件（WordPress称之为WXR），基本上和备份数据库差不多了；导入的时候是一个全新的干净的数据库，符合我的数据洁癖；一个特殊的应用是，在进行批量帖子修改（例如前面提到过的批量修改帖子内的链接）时，直接对这个文件进行查找替换就可以了，比数据库的修改要方便，也安全。另外就是编码问题上，比数据库容易修改，毕竟对一个文本文件彻底转编码比对一个数据库转编码要方便（数据库导出时如果就是乱码，很可能再也无法正确导入）。这个功能用起来很方便，建议每周备份。</p>
<p>　　3、phpMyAdmin的备份功能<br />
　　这是最传统的方法，当然还有更传统的Dump命令，省省吧（在我<a href="http://blog.williamgates.biz/2006/11/01/38">以前的文章</a>中提到过用命令的方式导出和导入数据库，特殊情况下必须用那样的方法）。我推荐用WP-phpMyAdmin插件来备份，虽然没有什么理论根据，但实践证明它备份出来的数据库是我以前诸次导入中最容易成功的。这个最麻烦，建议每次升级WordPress的时候备份，备份之后一定要在本地导入试试看，确保不是乱码再动手升级。</p>
<p>　　我知道这篇是这个系列中最没什么营养的……下一篇是IPower空间的一些固有问题和解决方案。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/twitter-app-causes-android-process-acore-error/' rel='bookmark' title='twitter官方客户端导致android联系人功能不能访问'>twitter官方客户端导致android联系人功能不能访问</a></li>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(四)恢复Blog数据和修正域名指向</title>
		<link>http://blog.williamgates.biz/2008/01/goodbye-icp-records-04/</link>
		<comments>http://blog.williamgates.biz/2008/01/goodbye-icp-records-04/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 15:14:29 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[IPowerWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/01/30/119</guid>
		<description><![CDATA[　　昨天说到安装配置好了WordPress，下一步的工作就是尽量恢复原来的数据了。DlzM选择了重新开始一个全新的blog，而我也觉得原来的数据库非常混乱（我有数据洁癖），决定手工添加旧文章，至于以前的留言……再说吧。 　　一、恢复Blog数据 　　1、文章 　　数据库备份下来的部分，在本地开一个Apache+MySQL，装上WordPress就能看到了。我不仅没有用数据库导入的功能，而且也不想用WordPress自身的导入功能，因为上次备份的WordPress版本太旧，我不想升级数据库那样折腾（不要问我为什么，我有数据洁癖）。当然最主要的原因是我希望把所有的文章略加编辑——我去掉了所有的more标签（也就是说在Blog主页和RSS上，所有的文章都将全文显示），给每篇文章加上了tag并重新考虑了分类，给每篇文章重写了Slug，并且重新上传了所有图片、修改了图片地址——这都是为了一个全新的、干净的Blog。我觉得这些修改让我很满意，不知道各位老读者觉得如何（特别是全文显示）。最后一个原因是，我想重读自己的文章，很多东西，我真的不知道是自己写的……各位不妨试试看，读一读你两年前写的文章，看看是什么感觉。 　　没有备份下来的部分，经某人（因为我忘了到底是谁）提醒，从RSS阅读器中抓取，感谢classicning提供了一个抓虾的地址，但是由于当时我的RSS不是全文的，还是丢失了一篇文章：答plioild点名的文章。没办法……另外由于我所有的影评、散文相关的图片都上传到Yupoo了，所以也只丢了一幅图片：百合ID返璞归真的纪念截图。另外，我没有加入两篇旧文章，一篇是NOD32安装教程，一篇是百合工作室服务恢复，这两篇内容都过时了，要说纪念价值，比它们有纪念价值的也很多（当然，懒的上传那几十幅图片也是一个原因）。顺便一说，我想把校园网的NOD32升级服务器换成3.0的，又要写教程了…… 　　2、留言 　　由于彻底地丢失了07年6月30日以后的留言、之前的留言我也无力全部手工恢复，于是只选择了其中比较有意义的一些，比如各位老朋友的第一次留言之类的，我冒充各位留了言然后修改时间（懒得进数据库改IP了，否则更真实），正是因为所有留言都是一个IP，WordPress说我发得太多，逼得我只能重新拨号上网换个IP才能继续留言…… 　　3、其他 　　所有的选项都是我手动改的；所有的友情链接(WordPress把它们称作Blogroll)都来自我的鲜果导出的OPML。顺便一说，我认识的人，想交换链接的请随意留言。 　　二、修正域名指向 　　因为lilystudio.org这个域名的管理人是Rufev，让他把子域名指过来还需要一段时间（况且他还忘了这茬，又拖了一天），而我等不及域名改过来就恢复了数据，所以一开始Blog地址、帖子的Permalink和图片地址都是dlzm.ipower.com这个域名下的某个子目录，要修改这些是一个挺麻烦的问题；但更麻烦的是，IPower的控制面板根本没有一个国内主机那样写着“域名绑定“的选项，到底该怎么设置？于是新一轮的折腾开始了…… 　　1、与域名设置的战斗 　　首先，我设想了让一个域名能指向一个虚拟主机的某个特定子目录的各种方法： 转移域名注册商(Registrar Transfer) 修改Name Server记录 转向(Redirect) “假想域名管理”（自创词汇） 　　第一种方法就是说把注册商转移为IPower，这是最彻底的方法，但这个域名不属于我，不可能把整个域名都转过来；第二种方法，是指修改这个域名的管理服务器，也就是”付费给A公司，在B公司管理域名“，国内很少有公司提供这种服务，国外很常见，我的STRATO直接在控制面板里提供了这样的功能（这是当然的，它的域名管理比IPower都要厉害，就是贵了点……），但基于同样的原因——域名不属于我，而子域名是不能单独修改NS记录的；第三种方法是指，在该域名现在的注册商的控制面板中，将域名Redirect过来到某个目录。这是常用的方法，实质上是域名指向注册商的某个专项页，再转移过来，有的域名商比如STRATO做得好，能隐藏转向，这样在地址栏都看不出问题。但这不是彻底的方法，速度、与WordPress的兼容上都有问题，严重的话会导致某些php程序根本不能使用；最后是我自己设想的一个办法，虽然控制面板里明确说了，要让一个域名指向这个虚拟主机的某个目录，必须是IPower管理的域名（也就是上面说的第一、二种方法）。但是我猜想，如果强行添加会不会有效呢？当然在真正有权管理的控制面板中（lilystudio.org的真正注册商），也要做一些修改。 修改该域名真正注册商控制面板中的设置，将域名的IP指向IPower提供的绑定用IP（和MySQL的主机一样，也藏在非常难找到的地方） 在IPower控制面板的Domain Pointing Manager中，添加一个域名lilystudio.org，指向我的blog的目录 如果你只拥有一个子域名（比如我拥有williamgates.liystudio.org），想要让它直接指向这个Blog，那么现在就已经完成了 如果你拥有整个域名（比如DlzM拥有dlzm.net），那么请在第一步中将整个域名而不是子域名指向IPower的IP，并且在第二步之后，继续在IPower中为dlzm.net添加子域名并且指向你要的目录。 修改DNS指向需要几分钟到24小时不等的时间才会传到你上网所使用的DNS；但是在虚拟主机控制面板这边的修改，瞬间生效 　　是的，一切就像实际上修改了Name Server一样，就像IPower在管理这些域名一样。当你把一个域名，不管是整个域名还是子域名指向IPower的IP，就等于授权它来管理这个域名，我不知道它到底是基于DNS的设置，还是基于服务器上的技巧（例如Apache的某种模块），但结果就是你完全可以在IPower这边顺利的使用了，就像域名在这里注册一样。对于我的域名来说，IPower认为*.lilystudio.org都归于我这个目录，但由于只有blog.williamgates.biz会被解析成IPower管辖下的IP，所以只有williamgates.lilystuido.org会转到我这个Blog来。我把这个方法称为“假想域名管理”，我推断绝大多数允许多站点（参看前面选购部分的对比）的国外虚拟主机，都可以并且应当这样使用。（这让我想到美国的长臂管辖，管判不管执行，只有财产到了美国境内（也就是域名指向了IPower管辖的IP），才真正受到执行） 　　2、与URL的战斗 　　域名指过来了，但是Blog里所有的URL都是旧的地址，所有链接都打不开，怎么办？ 　　首先，在WordPress的Options-General，修改WordPress address (URL)和Blog address (URL)这两项为新的地址，这样所有的动态页面的链接都对了。 　　你点击文章，但是显示404，这是为什么？因为所有的Permalink都不正确，静态页面还需要修改。进入Options-Permalinks，点击那个“Update Permalink Structure”的按钮（我是偶然发现这个方法的），所有的rewrite规则都将被自动修改（当然，WordPress需要有写.htaccess的权限）。另外，如果你使用了WP-Cache或者WP-SuperCache插件（比如我），请关闭它再打开，它也会自动修改一遍.htaccess，并且请到它的设置页面去清除、重建所有的缓存。 　　最后是最艰难的，文章中的旧链接，数据库中旧的上载文件记录，怎么办？用phpMyAdmin打开数据库，搜索你的旧地址，你会发现他们基本上都在Post表中（我是这时候才知道，该死的WordPress没有上载文件表，所有通过它上传的文件都和文章混在一个表中，难怪我们的文章ID不一定连续……），于是我们执行这样的SQL语句： UPDATE 表名 SET 字段名=REPLACE&#40;字段名,'原来的内容','替换后的内容'&#41;; 　　记得把你找到的所有含有旧链接的字段都执行一遍（不仅仅是content，因为还有图片的地址呢）。对于其他表中查找出的旧链接，总量一般不大、可能有特殊情况，所以建议手动一条条改（我只有一条）。 　　至此，不仅是WordPress本身，整个Blog已经重建完成，可以自如地使用了。下一集是与其他各种乱七八糟Bug的战斗…… Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　昨天说到安装配置好了WordPress，下一步的工作就是尽量恢复原来的数据了。<a href="http://www.dlzm.net">DlzM</a>选择了重新开始一个全新的blog，而我也觉得原来的数据库非常混乱（我有数据洁癖），决定手工添加旧文章，至于以前的留言……再说吧。</p>
<p>　　一、恢复Blog数据<br />
　　1、文章<br />
　　数据库备份下来的部分，在本地开一个Apache+MySQL，装上WordPress就能看到了。我不仅没有用数据库导入的功能，而且也不想用WordPress自身的导入功能，因为上次备份的WordPress版本太旧，我不想升级数据库那样折腾（不要问我为什么，我有数据洁癖）。当然最主要的原因是我希望把所有的文章略加编辑——我去掉了所有的more标签（也就是说在Blog主页和RSS上，所有的文章都将全文显示），给每篇文章加上了tag并重新考虑了分类，给每篇文章重写了Slug，并且重新上传了所有图片、修改了图片地址——这都是为了一个全新的、干净的Blog。我觉得这些修改让我很满意，不知道各位老读者觉得如何（特别是全文显示）。最后一个原因是，我想重读自己的文章，很多东西，我真的不知道是自己写的……各位不妨试试看，读一读你两年前写的文章，看看是什么感觉。<br />
　　没有备份下来的部分，经某人（因为我忘了到底是谁）提醒，从RSS阅读器中抓取，感谢<a href="http://www.classicning.com/blog/">classicning</a>提供了一个抓虾的地址，但是由于当时我的RSS不是全文的，还是丢失了一篇文章：答<a href="http://my.donews.com/phio/">plioild</a>点名的文章。没办法……另外由于我所有的影评、散文相关的图片都上传到Yupoo了，所以也只丢了一幅图片：<a href="http://blog.williamgates.biz/2007/08/24/112">百合ID返璞归真</a>的纪念截图。另外，我没有加入两篇旧文章，一篇是NOD32安装教程，一篇是百合工作室服务恢复，这两篇内容都过时了，要说纪念价值，比它们有纪念价值的也很多（当然，懒的上传那几十幅图片也是一个原因）。顺便一说，我想把校园网的NOD32升级服务器换成3.0的，又要写教程了……</p>
<p>　　2、留言<br />
　　由于彻底地丢失了07年6月30日以后的留言、之前的留言我也无力全部手工恢复，于是只选择了其中比较有意义的一些，比如各位老朋友的第一次留言之类的，我冒充各位留了言然后修改时间（懒得进数据库改IP了，否则更真实），正是因为所有留言都是一个IP，WordPress说我发得太多，逼得我只能重新拨号上网换个IP才能继续留言……</p>
<p>　　3、其他<br />
　　所有的选项都是我手动改的；所有的友情链接(WordPress把它们称作Blogroll)都来自我的<a href="http://www.xianguo.com/">鲜果</a>导出的OPML。顺便一说，我认识的人，想交换链接的请随意留言。<br />
<span id="more-119"></span><br />
　　二、修正域名指向<br />
　　因为lilystudio.org这个域名的管理人是<a href="http://blog.rufev.net/">Rufev</a>，让他把子域名指过来还需要一段时间（况且他还忘了这茬，又拖了一天），而我等不及域名改过来就恢复了数据，所以一开始Blog地址、帖子的Permalink和图片地址都是dlzm.ipower.com这个域名下的某个子目录，要修改这些是一个挺麻烦的问题；但更麻烦的是，IPower的控制面板根本没有一个国内主机那样写着“域名绑定“的选项，到底该怎么设置？于是新一轮的折腾开始了……</p>
<p>　　1、与域名设置的战斗<br />
　　首先，我设想了让一个域名能指向一个虚拟主机的某个特定子目录的各种方法：
<ul>
<li>转移域名注册商(Registrar Transfer)</li>
<li>修改Name Server记录</li>
<li>转向(Redirect)</li>
<li>“假想域名管理”（自创词汇）</li>
</ul>
<p>　　第一种方法就是说把注册商转移为IPower，这是最彻底的方法，但这个域名不属于我，不可能把整个域名都转过来；第二种方法，是指修改这个域名的管理服务器，也就是”付费给A公司，在B公司管理域名“，国内很少有公司提供这种服务，国外很常见，我的<a href="http://www.strato-hosting.co.uk/">STRATO</a>直接在控制面板里提供了这样的功能（这是当然的，它的域名管理比IPower都要厉害，就是贵了点……），但基于同样的原因——域名不属于我，而子域名是不能单独修改NS记录的；第三种方法是指，在该域名现在的注册商的控制面板中，将域名Redirect过来到某个目录。这是常用的方法，实质上是域名指向注册商的某个专项页，再转移过来，有的域名商比如<a href="http://www.strato-hosting.co.uk/">STRATO</a>做得好，能隐藏转向，这样在地址栏都看不出问题。但这不是彻底的方法，速度、与WordPress的兼容上都有问题，严重的话会导致某些php程序根本不能使用；最后是我自己设想的一个办法，虽然控制面板里明确说了，要让一个域名指向这个虚拟主机的某个目录，必须是IPower管理的域名（也就是上面说的第一、二种方法）。但是我猜想，如果强行添加会不会有效呢？当然在真正有权管理的控制面板中（lilystudio.org的真正注册商），也要做一些修改。
<ol>
<li>修改该域名真正注册商控制面板中的设置，将域名的IP指向IPower提供的绑定用IP（和MySQL的主机一样，也藏在非常难找到的地方）</li>
<li>在IPower控制面板的Domain Pointing Manager中，添加一个域名lilystudio.org，指向我的blog的目录</li>
<li>如果你只拥有一个子域名（比如我拥有williamgates.liystudio.org），想要让它直接指向这个Blog，那么现在就已经完成了</li>
<li>如果你拥有整个域名（比如DlzM拥有dlzm.net），那么请在第一步中将整个域名而不是子域名指向IPower的IP，并且在第二步之后，继续在IPower中为dlzm.net添加子域名并且指向你要的目录。</li>
<li>修改DNS指向需要几分钟到24小时不等的时间才会传到你上网所使用的DNS；但是在虚拟主机控制面板这边的修改，瞬间生效</li>
</ol>
<p>　　是的，一切就像实际上修改了Name Server一样，就像IPower在管理这些域名一样。当你把一个域名，不管是整个域名还是子域名指向IPower的IP，就等于授权它来管理这个域名，我不知道它到底是基于DNS的设置，还是基于服务器上的技巧（例如Apache的某种模块），但结果就是你完全可以在IPower这边顺利的使用了，就像域名在这里注册一样。对于我的域名来说，IPower认为*.lilystudio.org都归于我这个目录，但由于只有blog.williamgates.biz会被解析成IPower管辖下的IP，所以只有williamgates.lilystuido.org会转到我这个Blog来。我把这个方法称为“假想域名管理”，我推断绝大多数允许多站点（参看前面选购部分的对比）的国外虚拟主机，都可以并且应当这样使用。（这让我想到美国的长臂管辖，管判不管执行，只有财产到了美国境内（也就是域名指向了IPower管辖的IP），才真正受到执行）</p>
<p>　　2、与URL的战斗<br />
　　域名指过来了，但是Blog里所有的URL都是旧的地址，所有链接都打不开，怎么办？<br />
　　首先，在WordPress的Options-General，修改WordPress address (URL)和Blog address (URL)这两项为新的地址，这样所有的动态页面的链接都对了。<br />
　　你点击文章，但是显示404，这是为什么？因为所有的Permalink都不正确，静态页面还需要修改。进入Options-Permalinks，点击那个“Update Permalink Structure”的按钮（我是偶然发现这个方法的），所有的rewrite规则都将被自动修改（当然，WordPress需要有写.htaccess的权限）。另外，如果你使用了WP-Cache或者WP-SuperCache插件（比如我），请关闭它再打开，它也会自动修改一遍.htaccess，并且请到它的设置页面去清除、重建所有的缓存。<br />
　　最后是最艰难的，文章中的旧链接，数据库中旧的上载文件记录，怎么办？用phpMyAdmin打开数据库，搜索你的旧地址，你会发现他们基本上都在Post表中（我是这时候才知道，该死的WordPress没有上载文件表，所有通过它上传的文件都和文章混在一个表中，难怪我们的文章ID不一定连续……），于是我们执行这样的SQL语句：</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">UPDATE</span> 表名 <span style="color: #993333; font-weight: bold;">SET</span> 字段名<span style="color: #66cc66;">=</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span>字段名<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'原来的内容'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'替换后的内容'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>　　记得把你找到的所有含有旧链接的字段都执行一遍（不仅仅是content，因为还有图片的地址呢）。对于其他表中查找出的旧链接，总量一般不大、可能有特殊情况，所以建议手动一条条改（我只有一条）。</p>
<p>　　至此，不仅是WordPress本身，整个Blog已经重建完成，可以自如地使用了。下一集是与其他各种乱七八糟Bug的战斗……</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/01/goodbye-icp-records-04/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(三)重新部署WordPress以及IPowerWeb空间使用方法</title>
		<link>http://blog.williamgates.biz/2008/01/goodbye-icp-records-03/</link>
		<comments>http://blog.williamgates.biz/2008/01/goodbye-icp-records-03/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 14:09:57 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[IPowerWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/01/29/118</guid>
		<description><![CDATA[　　这两件事情本想分开来说，但发现我在部署过程中的大部分问题都是要在WordPress和IPowerWeb控制面板两边一起解决的，所以就合在一起写了。 　　一、IPowerWeb的vDeck控制面板 　　这个vDeck3.0是IPowerWeb公司近期才换上的，是他们主页上介绍的一大卖点。登陆上这个控制面板，发现比国内主机强得太多了，光图标就一堆，除了可以管理域名、FTP帐号、MySQL数据库、硬盘空间和文件等常见功能以外，还有文件打包上传下载，Email系统（附赠2500个Email帐号），在线网页编辑工具、整站建设工具等国内虚拟主机没有或很贵的空间才有的功能；最厉害的是，还能添加Cron任务，修改.htaccess文件，编辑php.ini文件，甚至能设置php的版本!各种原本不支持的模块，比如Zend之类，都可以手动修改配置文件来加上。基本上来说，实现了Linux命令行下控制服务器最常用的一些功能，真正是所谓”虚拟主机“。与国内的空间比起来，实在不是一种类型的东西；即使与我用过的英国Strato比起来，也要强大许多。 　　但是也有一个缺点，像大部分”美国式“的软件一样，这里没有详细的介绍和合理的菜单分类，你要做的就是一层层的仔细查找，最好能阅读IPower的整个知识库（我就这么做了），美国果然是人贵技术便宜，宁可写一大堆复杂的知识库，也不愿意派一个人来解答你的问题……总之整个界面复杂，不够人性化，越是重要的东西越是藏在找不到的地方，还需要复杂的知识才能把它玩得转……下面要说的整个部署过程，可以说都是和这个复杂的虚拟主机作斗争的过程。 　　二、WordPress的基本安装部署 　　这里提供php4/5的版本选择，MySQL和Apache也是最新版本，再也没有在国内主机那种催着主机商升级MySQL的痛苦了。但是美国人不明白最新的未必是最好的，这些最新的版本也带来不少麻烦。下面我们就来看看WordPress的安装经历。 　　首先，从wordpress.org下载最新版本的WordPress，解压后上传；在控制面板里新建一个数据库，把用户名密码写在WordPress的配置文件里；然后在浏览器地址栏输入install.php的具体地址，一回车……唉？500 Error？ 　　1、与数据库连接的战斗 　　上网搜索WordPress 500 Error，到处都是讲解如何连接数据库的，这个我也会啊……然后想想，是不是这个空间的数据库特别一点呢？在控制面板中四处翻看，发现数据库的最下面有一行小字：Database is on ***.ipowermysql.com。哦，原来数据库和Web服务器不在一台主机上，但是我发现这个域名不要说ping，连DNS解析都解析不出来，于是我登陆控制面板里提供的phpMyAdmin，发现phpMyAdmin所认出的主机是一长串奇怪的域名；我ping这个域名，得到一个IP地址，但是把这两个域名和IP地址填入WordPress配置文件，看到的都是500 Error。 　　2、与CGI选项的战斗 　　一上来就受挫折，我静下来思考，决定放上探针看看基本的服务器环境。没想到php探针也不能运行！于是我开始怀疑不是数据库的问题，而是php本身的问题。在控制面板里四处找找看，发现CGI写着Inactive，但是php不是一定要用CGI方式运行啊，而且心目中CGI总是不稳定、不安全和主机商不肯提供的功能，跟我的php不能运行何干……但是当我抱着试试看的心态打开CGI的时候，发现php终于能够运行了——这个虚拟主机，默认是不打开动态页面功能的！也就是说，如果你不知道在这里打开这个选项，你等于买了个HTM空间…… 　　成功运行php后，经过实验证明，数据库主机应该是那个ipowermysql，不能DNS解析的主机但是能正常用，够牛。像装普通软件一样安装好WordPress，就可以用了。 　　小结：IPowerWeb的虚拟主机，一上来请先打开CGI支持；数据库主机在（你的用户名）.ipowermysql.com上。 　　三、WordPress的设置、插件和Theme 　　首先修改了WordPress的基本设置，然后换上了这个一直想用的Theme:GlossyBlue，并且上传了我以前用的各种插件。下面问题就来了： 　　1、与Google Analytics以及Theme的战斗 　　好久不用Google AdSense和Google Analytics了，登上去一看，发现都换了新的代码和管理方式。设计和配置了几个广告，还有分析代码，放到了页面上。一部分广告用WordPress的Widgets功能放到了Sidebar，还有一个通过修改single.php放在了每篇文章的底部。Google Analytics代码按我的习惯，放在了footer.php里面。乍看起来没什么问题，但是不经意间打开IE（我平时用FireFox），发现最下面的三栏变成与页面等宽了（越出了整个Blog主体的边界），很难看，想来想去找不到问题所在。 　　这次又像数据库和CGI的问题一样，犯了一个连环故障的错误，我猜想到是加入的Analytics代码的问题，于是把代码放到了Sidebar里面，但是偷懒没有给这个Text Widget加上标题。结果不管我怎么修改，哪怕删掉所有的留言（让变宽的第二栏保持空白）还是这样，我甚至怀疑是Theme自己的Bug，研读了全部的CSS也没有找到问题所在。于是我决定去掉AdSense和Analytics代码，结果恢复正常了，我这才想到，Text Widget的标题也许不仅仅是一个标题而已？经过实验才发现，当你给Text Widget加了标题，WordPress会自动多加一层div，这样就与下面的footer互不干扰了；否则不管是放在Sidebar还是footer，Google Analytics的新版本代码都会在IE里显示成一个空白行，从而影响整个页面的布局。 　　但是我现在还是不愿意加上一个标题，我把代码藏在其他的地方了……你猜在哪？ 　　2、与中文tag链接的战斗 　　WordPress新加入的tag功能是一大卖点，也是WP用户一直眼馋别的Blog系统的重要原因（当然，有插件可以实现tag，但总不比内建的来得好）。但是我以前的主机开开停停，我从没注意过这样一个现象——点击标签云中的中文标签，是无法找到页面的！上网搜索，原来需要修改wp-includes里的rewrite.php，把函数 function get_tag_permastruct() 中的 if &#40;empty&#40;$this-&#62;permalink_structure&#41;&#41; &#123; 改为 if &#40;!empty&#40;$this-&#62;permalink_structure&#41;&#41; &#123; 　　就可以了。 　　3、与Cryptographp的战斗 　　Cryptographp是一个著名的基于php和GD库的验证码生成器，基于它开发的WP插件也叫Cryptographp，用于防止垃圾留言。我用它已经很长时间了，更换到这个主机之后，我用了最新的版本，还特意换了一幅背景图以便和这个主题的颜色相配。但是很快我发现，虽然它能正常的显示出验证码，但是不管你输入什么，都无法留言，显示”Wrong anti-spam word.“。上网搜索，只得知在K2下，theme里面的true和false是颠倒的（黑白颠倒？），但我没有用K2啊…… 　　我只能怀疑Cryptographp的最新版本和WordPress兼容有问题，于是换了一个验证码更容易看懂也更容易配置的插件：Did You Pass Math?，但可笑的是我居然没有注意到它的输入框在哪（在留言内容的下面，不方便），以为它没起作用，就又下载了了一个据说是它的变态加强版的Challenge，这个可以自由放置输入框、自由设置问题格式，也可以把问题变得非常复杂……但是我觉得没必要了，虽然我知道绝大多数验证码都容易被程序破解，Cryptographp产生的那些才算有点安全——但现在的加法题我也很满意了。 [...]]]></description>
			<content:encoded><![CDATA[<p>　　这两件事情本想分开来说，但发现我在部署过程中的大部分问题都是要在WordPress和IPowerWeb控制面板两边一起解决的，所以就合在一起写了。</p>
<p>　　一、IPowerWeb的vDeck控制面板<br />
　　这个vDeck3.0是IPowerWeb公司近期才换上的，是他们主页上介绍的一大卖点。登陆上这个控制面板，发现比国内主机强得太多了，光图标就一堆，除了可以管理域名、FTP帐号、MySQL数据库、硬盘空间和文件等常见功能以外，还有文件打包上传下载，Email系统（附赠2500个Email帐号），在线网页编辑工具、整站建设工具等国内虚拟主机没有或很贵的空间才有的功能；最厉害的是，还能添加Cron任务，修改.htaccess文件，编辑php.ini文件，甚至能设置php的版本!各种原本不支持的模块，比如Zend之类，都可以手动修改配置文件来加上。基本上来说，实现了Linux命令行下控制服务器最常用的一些功能，真正是所谓”虚拟主机“。与国内的空间比起来，实在不是一种类型的东西；即使与我用过的英国<a href="http://www.strato-hosting.co.uk/">Strato</a>比起来，也要强大许多。<br />
　　但是也有一个缺点，像大部分”美国式“的软件一样，这里没有详细的介绍和合理的菜单分类，你要做的就是一层层的仔细查找，最好能阅读IPower的整个知识库（我就这么做了），美国果然是人贵技术便宜，宁可写一大堆复杂的知识库，也不愿意派一个人来解答你的问题……总之整个界面复杂，不够人性化，越是重要的东西越是藏在找不到的地方，还需要复杂的知识才能把它玩得转……下面要说的整个部署过程，可以说都是和这个复杂的虚拟主机作斗争的过程。</p>
<p>　　二、WordPress的基本安装部署<br />
　　这里提供php4/5的版本选择，MySQL和Apache也是最新版本，再也没有在国内主机那种催着主机商升级MySQL的痛苦了。但是美国人不明白最新的未必是最好的，这些最新的版本也带来不少麻烦。下面我们就来看看WordPress的安装经历。<br />
　　首先，从<a href="http://www.wordpress.org/">wordpress.org</a>下载最新版本的WordPress，解压后上传；在控制面板里新建一个数据库，把用户名密码写在WordPress的配置文件里；然后在浏览器地址栏输入install.php的具体地址，一回车……唉？500 Error？</p>
<p>　　1、与数据库连接的战斗<br />
　　上网搜索WordPress 500 Error，到处都是讲解如何连接数据库的，这个我也会啊……然后想想，是不是这个空间的数据库特别一点呢？在控制面板中四处翻看，发现数据库的最下面有一行小字：Database is on <del datetime="2008-01-29T11:31:37+00:00">***</del>.ipowermysql.com。哦，原来数据库和Web服务器不在一台主机上，但是我发现这个域名不要说ping，连DNS解析都解析不出来，于是我登陆控制面板里提供的phpMyAdmin，发现phpMyAdmin所认出的主机是一长串奇怪的域名；我ping这个域名，得到一个IP地址，但是把这两个域名和IP地址填入WordPress配置文件，看到的都是500 Error。</p>
<p>　　2、与CGI选项的战斗<br />
　　一上来就受挫折，我静下来思考，决定放上探针看看基本的服务器环境。没想到php探针也不能运行！于是我开始怀疑不是数据库的问题，而是php本身的问题。在控制面板里四处找找看，发现CGI写着Inactive，但是php不是一定要用CGI方式运行啊，而且心目中CGI总是不稳定、不安全和主机商不肯提供的功能，跟我的php不能运行何干……但是当我抱着试试看的心态打开CGI的时候，发现php终于能够运行了——这个虚拟主机，默认是不打开动态页面功能的！也就是说，如果你不知道在这里打开这个选项，你等于买了个HTM空间……</p>
<p>　　成功运行php后，经过实验证明，数据库主机应该是那个ipowermysql，不能DNS解析的主机但是能正常用，够牛。像装普通软件一样安装好WordPress，就可以用了。<br />
　　小结：IPowerWeb的虚拟主机，一上来请先打开CGI支持；数据库主机在（你的用户名）.ipowermysql.com上。<br />
<span id="more-118"></span><br />
　　三、WordPress的设置、插件和Theme<br />
　　首先修改了WordPress的基本设置，然后换上了这个一直想用的Theme:<a href="http://www.ndesign-studio.com/resources/wp-themes/glossyblue/">GlossyBlue</a>，并且上传了我以前用的各种插件。下面问题就来了：</p>
<p>　　1、与Google Analytics以及Theme的战斗<br />
　　好久不用<a href="https://www.google.com/adsense/">Google AdSense</a>和<a href="https://www.google.com/analytics/">Google Analytics</a>了，登上去一看，发现都换了新的代码和管理方式。设计和配置了几个广告，还有分析代码，放到了页面上。一部分广告用WordPress的Widgets功能放到了Sidebar，还有一个通过修改single.php放在了每篇文章的底部。Google Analytics代码按我的习惯，放在了footer.php里面。乍看起来没什么问题，但是不经意间打开IE（我平时用FireFox），发现最下面的三栏变成与页面等宽了（越出了整个Blog主体的边界），很难看，想来想去找不到问题所在。<br />
　　这次又像数据库和CGI的问题一样，犯了一个连环故障的错误，我猜想到是加入的Analytics代码的问题，于是把代码放到了Sidebar里面，但是偷懒没有给这个Text Widget加上标题。结果不管我怎么修改，哪怕删掉所有的留言（让变宽的第二栏保持空白）还是这样，我甚至怀疑是Theme自己的Bug，研读了全部的CSS也没有找到问题所在。于是我决定去掉AdSense和Analytics代码，结果恢复正常了，我这才想到，Text Widget的标题也许不仅仅是一个标题而已？经过实验才发现，当你给Text Widget加了标题，WordPress会自动多加一层div，这样就与下面的footer互不干扰了；否则不管是放在Sidebar还是footer，Google Analytics的新版本代码都会在IE里显示成一个空白行，从而影响整个页面的布局。<br />
　　但是我现在还是不愿意加上一个标题，我把代码藏在其他的地方了……你猜在哪？</p>
<p>　　2、与中文tag链接的战斗<br />
　　WordPress新加入的tag功能是一大卖点，也是WP用户一直眼馋别的Blog系统的重要原因（当然，有插件可以实现tag，但总不比内建的来得好）。但是我以前的主机开开停停，我从没注意过这样一个现象——点击标签云中的中文标签，是无法找到页面的！上网搜索，原来需要修改wp-includes里的rewrite.php，把函数 <code>function get_tag_permastruct()</code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>　　就可以了。</p>
<p>　　3、与Cryptographp的战斗<br />
　　Cryptographp是一个著名的基于php和GD库的验证码生成器，基于它开发的WP插件也叫Cryptographp，用于防止垃圾留言。我用它已经很长时间了，更换到这个主机之后，我用了最新的版本，还特意换了一幅背景图以便和这个主题的颜色相配。但是很快我发现，虽然它能正常的显示出验证码，但是不管你输入什么，都无法留言，显示”Wrong anti-spam word.“。上网搜索，只得知在<a href="http://getk2.com/">K2</a>下，theme里面的true和false是颠倒的（黑白颠倒？），但我没有用K2啊……<br />
　　我只能怀疑Cryptographp的最新版本和WordPress兼容有问题，于是换了一个验证码更容易看懂也更容易配置的插件：<a href="http://www.herod.net/dypm/">Did You Pass Math?</a>，但可笑的是我居然没有注意到它的输入框在哪（在留言内容的下面，不方便），以为它没起作用，就又下载了了一个据说是它的变态加强版的<a href="http://lordchaos.dominatus.net/wordpress-plugin-challenge">Challenge</a>，这个可以自由放置输入框、自由设置问题格式，也可以把问题变得非常复杂……但是我觉得没必要了，虽然我知道绝大多数验证码都容易被程序破解，Cryptographp产生的那些才算有点安全——但现在的加法题我也很满意了。<br />
　　小结：新版的Google Analytics和AdSense代码在使用的时候，请务必在外面加上一层div；WordPress 2.3.2下，要想使用中文tag请修改rewrite.php文件；Cryptographp在WordPress 2.3.2下不能正常使用，Challenge是一个不错的选择。<br />
　　附上我使用的WordPress插件列表：</p>
<ul>
<li><a href="http://ajax-comments.dev.rain.hu/">AJAX Comments</a>：让留言过程AJAX化，只是更好看一点而已（最新版本收费了，免费的最后一个版本是2.08）</li>
<li><a href="http://lordchaos.dominatus.net/wordpress-plugin-challenge">Challenge</a>：生成验证码问题</li>
<li><a href="http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/">Viper&#8217;s Video Quicktags</a>：方便地在文章中添加YouTube等flv来源</li>
<li><a href="http://www.ilfilosofo.com/blog/wp-db-backup">WordPress Database Backup</a>：数据库备份，支持WordPress的内建Cron功能，但是在我以前的主机上备份出乱码，现在好用了</li>
<li><a href="http://johannesries.de/webwork/wp-filemanager/">WP-FileManager</a>：文件管理器，鸡肋，我本来是想用来批量修改图片地址的（但是没这功能）</li>
<li><a href="http://wordpress.designpraxis.at/">WP-phpMyAdmin</a>：在WP内运行的phpMyAdmin，没什么特别的，但是用起来比另开一个方便</li>
<li><a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a>：生成静态页面，提高访问速度，这个插件比较麻烦，涉及mod_rewrite，有些主机不支持，而且支持了也有很多人不会用……所以建议慎用，用前请仔细阅读它自己的说明</li>
</ul>
<p>　　至此，整个WordPress好歹能运行了。下面要做的就是恢复文章，以及无穷无尽的各种Bug。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/01/goodbye-icp-records-03/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(二)选购国外虚拟主机</title>
		<link>http://blog.williamgates.biz/2008/01/goodbye-icp-records-02/</link>
		<comments>http://blog.williamgates.biz/2008/01/goodbye-icp-records-02/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 11:30:22 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[IPowerWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/01/29/117</guid>
		<description><![CDATA[　　不管365bit这边的数据能不能抢救回来，要换个地方是肯定的了；到底是买国内的虚拟主机还是国外的，到底买哪家的呢？请看我们的选购过程： 　　一、国内还是国外 　　国内虚拟主机优点： 速度较快 与客服联系方便 不怕篱笆 还有么…… 　　特别是DRL老大出售的移动机房VPS（比虚拟主机还好，更加自由，就是麻烦点），到国内各种网络速度都不慢，价钱也很便宜，这个被列为考虑对象。 　　国内虚拟主机缺点： 性价比差 限制太多，不自由 管理技术差，重要的服务器端软件版本混乱，常年不更新 ICP备…… 　　国外主机的优点就是国内主机的缺点吧：空间、流量都很宽裕，功能强大、限制较少，技术水平高，最重要的是不需要那个证书……于是，我们决定买国外主机。 　　二、选购国外虚拟主机 　　首先到网上搜索广为推荐的国外虚拟主机，当然，我知道其中有很多软广告，我要自己评价。我的选购标准是：比较便宜，两三个人能买得起；空间和流量并无所谓（相比国内而言，每家国外主机商都算慷慨了）；独立IP、强大的控制面板和较新的软件版本、较自由的配置功能，是我较为重视的；该公司的资信、是否同时经营域名注册（我要转一个域名过去）、支付时限是否太长，也都是需要考虑的问题。我把通过初筛的公司列了一个表，这里摘录如下（与网上提供的总结不同，全部来自于2008年1月底访问的各公司主页的明确说明，并且没有考虑任何的非公开优惠卷）： HostGator 600G空间 6000G流量 可设置站点无限 数据库无限 无免费赠送域名 月租$9.95（以12个月一起支付时的价格，下同。一般一次性购买时间越长，月租越便宜） IXWebHosting 无限空间 无限流量 可设置站点无限 数据库100个 免费赠送域名2个 月租$7.95 DreamHost 500G空间（会逐渐增长，难道是Gmail……） 5000G流量（同样会增长） 可设置站点无限 数据库无限 免费赠送域名1个 月租$9.95（买10年的话$5.95，我吃饱了撑的啊） GoDaddy 100G空间 1000G流量 可设置站点无限 数据库25个 无免费赠送域名 月租$6.64 IPowerWeb 1500G空间 15000G流量 可设置站点25个 数据库25个 免费赠送域名1个 月租$7.95（冬季特惠$4.95） 　　从各方面看来，HostGator似乎比较专业，但较贵；IXWebHosting性价比最高，提供的服务最厉害，但是有传言说它一方面稳定性不高，二方面看似什么都不限制，实际上用到一定限度还是会想方设法找你茬的；DreamHost国内评价较差，是因为国内用户买得太多了吧；GoDaddy据说是著名的老牌主机商，但正因为太著名了，大部分IP都被篱笆挡掉了；IPowerWeb中规中矩，似乎国内用户用得很少，但是国际上综合评价颇高。 　　这时候DlzM开始联系这几家的客服，了解一下服务情况。我们发现IPowerWeb由于最近刚提升到现在的容量和流量，所以开启了冬季促销活动，第一年每个月只要$4.95；我们联系了IXWebHosting，向它的客服要一点用于测试速度的站点，但是他不给，说我们有无条件退款政策（也就是说让我们先买了用用看），对这个客服失去信心了。 　　但最可笑的是，我们最后买了一个客服完全不理我们的空间。IPowerWeb的冬季促销看起来很诱人，我们正在犹豫，当我关闭窗口的时候突然跳出来一个对话框（模仿MSN聊天界面），说你别走，我给你再优惠一点怎样，每个月$3.95如何？我晕，难道这是小商品市场买袜子么……但是这招还不错，我们决定既然这么便宜，就买吧…… 　　DlzM发信去问这个优惠到底是怎么回事（突然弹出一个窗口你信啊），结果一直没有人回信，我们也等不及了，干脆就买下来。买的时候是27号中午，我当时估计要等我们的夜里他们上班了才能开通吧，结果5分钟之后DlzM发消息过来说，已经能用了…… [...]]]></description>
			<content:encoded><![CDATA[<p>　　不管365bit这边的数据能不能抢救回来，要换个地方是肯定的了；到底是买国内的虚拟主机还是国外的，到底买哪家的呢？请看我们的选购过程：</p>
<p>　　一、国内还是国外<br />
　　国内虚拟主机优点：
<ul>
<li>速度较快</li>
<li>与客服联系方便</li>
<li>不怕篱笆</li>
<li>还有么……</li>
</ul>
<p>　　特别是DRL老大出售的移动机房VPS（比虚拟主机还好，更加自由，就是麻烦点），到国内各种网络速度都不慢，价钱也很便宜，这个被列为考虑对象。<br />
　　国内虚拟主机缺点：
<ul>
<li>性价比差</li>
<li>限制太多，不自由</li>
<li>管理技术差，重要的服务器端软件版本混乱，常年不更新</li>
<li>ICP备……</li>
</ul>
<p>　　国外主机的优点就是国内主机的缺点吧：空间、流量都很宽裕，功能强大、限制较少，技术水平高，最重要的是不需要那个证书……于是，我们决定买国外主机。</p>
<p>　　二、选购国外虚拟主机<br />
　　首先到网上搜索广为推荐的国外虚拟主机，当然，我知道其中有很多软广告，我要自己评价。我的选购标准是：比较便宜，两三个人能买得起；空间和流量并无所谓（相比国内而言，每家国外主机商都算慷慨了）；独立IP、强大的控制面板和较新的软件版本、较自由的配置功能，是我较为重视的；该公司的资信、是否同时经营域名注册（我要转一个域名过去）、支付时限是否太长，也都是需要考虑的问题。我把通过初筛的公司列了一个表，这里摘录如下（与网上提供的总结不同，全部来自于2008年1月底访问的各公司主页的明确说明，并且没有考虑任何的非公开优惠卷）：<br />
<span id="more-117"></span></p>
<ul>
	<strong>HostGator</strong></p>
<li>600G空间</li>
<li>6000G流量</li>
<li>可设置站点无限</li>
<li>数据库无限</li>
<li>无免费赠送域名</li>
<li>月租$9.95（以12个月一起支付时的价格，下同。一般一次性购买时间越长，月租越便宜）</li>
</ul>
<ul>
	<strong>IXWebHosting</strong></p>
<li>无限空间</li>
<li>无限流量</li>
<li>可设置站点无限</li>
<li>数据库100个</li>
<li>免费赠送域名2个</li>
<li>月租$7.95</li>
</ul>
<ul>
	<strong>DreamHost</strong></p>
<li>500G空间（会逐渐增长，难道是Gmail……）</li>
<li>5000G流量（同样会增长）</li>
<li>可设置站点无限</li>
<li>数据库无限</li>
<li>免费赠送域名1个</li>
<li>月租$9.95（买10年的话$5.95，我吃饱了撑的啊）</li>
</ul>
<ul>
	<strong>GoDaddy</strong></p>
<li>100G空间</li>
<li>1000G流量</li>
<li>可设置站点无限</li>
<li>数据库25个</li>
<li>无免费赠送域名</li>
<li>月租$6.64</li>
</ul>
<ul>
	<strong>IPowerWeb</strong></p>
<li>1500G空间</li>
<li>15000G流量</li>
<li>可设置站点25个</li>
<li>数据库25个</li>
<li>免费赠送域名1个</li>
<li>月租$7.95（冬季特惠$4.95）</li>
</ul>
<p>　　从各方面看来，HostGator似乎比较专业，但较贵；IXWebHosting性价比最高，提供的服务最厉害，但是有传言说它一方面稳定性不高，二方面看似什么都不限制，实际上用到一定限度还是会想方设法找你茬的；DreamHost国内评价较差，是因为国内用户买得太多了吧；GoDaddy据说是著名的老牌主机商，但正因为太著名了，大部分IP都被篱笆挡掉了；IPowerWeb中规中矩，似乎国内用户用得很少，但是国际上综合评价颇高。<br />
　　这时候<a href="http://www.dlzm.net">DlzM</a>开始联系这几家的客服，了解一下服务情况。我们发现IPowerWeb由于最近刚提升到现在的容量和流量，所以开启了冬季促销活动，第一年每个月只要$4.95；我们联系了IXWebHosting，向它的客服要一点用于测试速度的站点，但是他不给，说我们有无条件退款政策（也就是说让我们先买了用用看），对这个客服失去信心了。<br />
　　但最可笑的是，我们最后买了一个客服完全不理我们的空间。<a href="http://www.ipowerweb.com/wintersale.html">IPowerWeb的冬季促销</a>看起来很诱人，我们正在犹豫，当我关闭窗口的时候突然跳出来一个对话框（模仿MSN聊天界面），说你别走，我给你再优惠一点怎样，每个月$3.95如何？我晕，难道这是小商品市场买袜子么……但是这招还不错，我们决定既然这么便宜，就买吧……<br />
　　DlzM发信去问这个优惠到底是怎么回事（突然弹出一个窗口你信啊），结果一直没有人回信，我们也等不及了，干脆就买下来。买的时候是27号中午，我当时估计要等我们的夜里他们上班了才能开通吧，结果5分钟之后DlzM发消息过来说，已经能用了……</p>
<p>　　千挑万选了好久，结果选了个自助式小商品市场！</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/01/goodbye-icp-records-02/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(一)抢救Blog</title>
		<link>http://blog.williamgates.biz/2008/01/goodbye-icp-records-01/</link>
		<comments>http://blog.williamgates.biz/2008/01/goodbye-icp-records-01/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 06:31:13 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[和谐]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/01/29/116</guid>
		<description><![CDATA[　　这个系列是我的Blog从最近一次彻底的当机、数据丢失到转移至国外空间，恢复数据并重建的全部过程。 　　Google Analytics的数据显示，从2008年1月10日起，我的Blog突然没有任何访问量，估计就是从那天起开始当机的。当时我处在复习考研最紧张的阶段，没时间折腾这些事情，而且我以为会像07年那次三个月的关机一样，等风头一过，空间商自然会开机的。 　　但当我考过研，开始联系空间商的时候，才发现，他们的主页www.365bit.com虽然能够打开，但是上面所有的QQ客服都不在线；所有的电话都无人接听（包括以前得到的客服的手机，没有关机但是无人接听）；淘宝旺旺上的销售员一直在线，但是不回答任何问题；他们的虚拟主机控制面板（和公司主页在同一台机器）也开着，但是不能连接上我们的空间所在的主机（当然，关了嘛）。 　　这个时候我们才意识到问题的严重。我的几个朋友经我推荐，个人blog都在这个主机上，我曾经还跟DlzM开过玩笑，说我们的空间商要是卷款逃跑了咋办，然后想想不可能，那破主机才值几个钱，空间商每年赚的钱估计还不够游一趟东南亚的，卷款又能跑到哪里去。但是现在事实摆在面前，不管关机的原因是什么，反正我们的空间商不愿意再承担这关机的责任，人间蒸发了，这是千真万确的。 　　我们四处打听，从仅存的公司主页中查找蛛丝马迹，发现： 　　１、这个公司（上海垂天计算机网络有限公司）的电子营业执照，到上海工商局去查，不知道是该公司造假还是上海工商局管发不管查，反正没有任何记录，只有营业执照上的一个营业地址，用脚趾也能想出来显然人去楼空了； 　　2、主机所在的机房是上海电信长途局3号机房，四处打听有没有人认识这个机房的管理人员，无果； 　　3、有人告诉我可能是整个机房被河蟹了，但根据IP来看，其公司主页的机器与我们的主机仅1一位之差，在www.myipneighbors.com查询同C段其他的主机，有不少都是开着的，当然，同C端不代表同机房，只是整个机房都关掉的可能性不大。 　　所以，没办法了。 　　我和DlzM一合计，开始了第二步：买一个国外的虚拟主机。 Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　这个系列是我的Blog从最近一次彻底的当机、数据丢失到转移至国外空间，恢复数据并重建的全部过程。</p>
<p>　　<a href="https://www.google.com/analytics/">Google Analytics</a>的数据显示，从2008年1月10日起，我的Blog突然没有任何访问量，估计就是从那天起开始当机的。当时我处在复习考研最紧张的阶段，没时间折腾这些事情，而且我以为会像07年那次三个月的关机一样，等风头一过，空间商自然会开机的。<br />
　　但当我考过研，开始联系空间商的时候，才发现，他们的主页<a href="http://www.365bit.com">www.365bit.com</a>虽然能够打开，但是上面所有的QQ客服都不在线；所有的电话都无人接听（包括以前得到的客服的手机，没有关机但是无人接听）；淘宝旺旺上的销售员一直在线，但是不回答任何问题；他们的虚拟主机控制面板（和公司主页在同一台机器）也开着，但是不能连接上我们的空间所在的主机（当然，关了嘛）。<br />
　　这个时候我们才意识到问题的严重。我的几个朋友经我推荐，个人blog都在这个主机上，我曾经还跟<a href="http://www.dlzm.net">DlzM</a>开过玩笑，说我们的空间商要是卷款逃跑了咋办，然后想想不可能，那破主机才值几个钱，空间商每年赚的钱估计还不够游一趟东南亚的，卷款又能跑到哪里去。但是现在事实摆在面前，不管关机的原因是什么，反正我们的空间商不愿意再承担这关机的责任，人间蒸发了，这是千真万确的。<br />
　　我们四处打听，从仅存的公司主页中查找蛛丝马迹，发现：<br />
　　１、这个公司（上海垂天计算机网络有限公司）的电子营业执照，到上海工商局去查，不知道是该公司造假还是上海工商局管发不管查，反正没有任何记录，只有营业执照上的一个营业地址，用脚趾也能想出来显然人去楼空了；<br />
　　2、主机所在的机房是上海电信长途局3号机房，四处打听有没有人认识这个机房的管理人员，无果；<br />
　　3、有人告诉我可能是整个机房被河蟹了，但根据IP来看，其公司主页的机器与我们的主机仅1一位之差，在<a href="http://www.myipneighbors.com/ ">www.myipneighbors.com</a>查询同C段其他的主机，有不少都是开着的，当然，同C端不代表同机房，只是整个机房都关掉的可能性不大。<br />
　　所以，没办法了。<br />
　　我和<a href="http://www.dlzm.net">DlzM</a>一合计，开始了第二步：买一个国外的虚拟主机。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/01/goodbye-icp-records-01/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Blog升级到2.3.1</title>
		<link>http://blog.williamgates.biz/2007/11/upgrade-wordpress-231/</link>
		<comments>http://blog.williamgates.biz/2007/11/upgrade-wordpress-231/#comments</comments>
		<pubDate>Sat, 03 Nov 2007 12:46:03 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2007/11/03/114</guid>
		<description><![CDATA[　　虽然BRAS让我们上网花钱，但有一个好处就是FTP协议上传不会出错了。托它的福，今天就顺手把这个搞了一下，升级到了2.3.1。 　　最引人注目的就是2.3引入的tag功能吧，我要试试看…… Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　虽然BRAS让我们上网花钱，但有一个好处就是FTP协议上传不会出错了。托它的福，今天就顺手把这个搞了一下，升级到了2.3.1。<br />
　　最引人注目的就是2.3引入的tag功能吧，我要试试看……</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2007/11/upgrade-wordpress-231/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>更换WordPress Theme</title>
		<link>http://blog.williamgates.biz/2007/08/change-theme-of-wordpress/</link>
		<comments>http://blog.williamgates.biz/2007/08/change-theme-of-wordpress/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 14:23:58 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2007/08/22/111</guid>
		<description><![CDATA[　　在北京期间就发现了这个主题，但在北大的教育网中上传速度实在太慢，就没有动手；回来后上网一看，发现和菜头已经用上了这个，还玩得挺转，生怕别人说我跟风，就暂放下了。昨天百合上有人问我在校园网怎么往公网部署网站，我才想起来在该死的南大校园网，FTP协议的任何上传都会丢失文件的一小部分，是没法部署的……赶紧趁回学校之前把这事做了。 　　毕竟是WP 2.0之后的theme，WebForm拖动/收缩、Widgets之类是一应俱全。前者是纯属花哨物（好像还能用cookie记录你的选择，好像而已），后者的确看起来方便了许多，修改Sidebar，只要在后台拖拖几个东西就OK了。但是也造成了乱起八糟的引用结构，要自己写一个widgets费了老鼻子劲找代码插在哪。但是我刚刚（没错，就在写这篇文章写到一半看到和菜头的blog并且突发奇想他怎么可能有兴趣把那么多乱七八糟的东西都写代码写进去的时候），我才明白，原来Widgets里面的Text Widgets装的是html，不是我想的”text”，ft。只要把代码填到那里面，Widgets想要多少有多少…… 　　唉，害得我一个中午都在折腾GoogleAD的位置，这么简单就搞定了…… 　　修改了Cryptographp（验证码生成插件）的图片显示设置，使用了aqua candy图作为背景（都是apple风格吗，不知道aqua candy是什么？看这里），各位留言的时候看得还习惯么？本想用这个主题本身的背景图，但截下来总是不好看，这个问题再议吧…… 　　尝试把整个aqua candy用来替换这个主题的背景图（想明亮一点），但是由于我配不好周围的一圈gif的颜色（背景是中间jpg，旁边gif，底下背景色)，怎么都看起来过渡很生硬，只得放弃，这个东西可以回学校再弄的吧。 　　下午没时间，直到今天晚上才完全弄好，没想到classicning已经提前发现并且留言了……话说终于有最近留言功能了，可怜我自己不会写啊…… 　　近期准备尝试这个theme制作者的另一个Theme: GlossyBlue，那个看起来要淡雅和低调一点……这个太apple感了，虽然我喜欢，但是似乎长久用起来有违本blog低调的定位…… 　　感谢各位对本blog的关注，特别是近几天能发现theme变化了的同学们…… Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　在北京期间就发现了这个主题，但在北大的教育网中上传速度实在太慢，就没有动手；回来后上网一看，发现<a href="http://www.hecaitou.net/">和菜头</a>已经用上了这个，还玩得挺转，生怕别人说我跟风，就暂放下了。昨天百合上有人问我在校园网怎么往公网部署网站，我才想起来在该死的南大校园网，FTP协议的任何上传都会丢失文件的一小部分，是没法部署的……赶紧趁回学校之前把这事做了。<br />
　　毕竟是WP 2.0之后的theme，WebForm拖动/收缩、Widgets之类是一应俱全。前者是纯属花哨物（好像还能用cookie记录你的选择，好像而已），后者的确看起来方便了许多，修改Sidebar，只要在后台拖拖几个东西就OK了。但是也造成了乱起八糟的引用结构，要自己写一个widgets费了老鼻子劲找代码插在哪。但是我刚刚（没错，就在写这篇文章写到一半看到和菜头的blog并且突发奇想他怎么可能有兴趣把那么多乱七八糟的东西都写代码写进去的时候），我才明白，原来Widgets里面的Text Widgets装的是html，不是我想的”text”，ft。只要把代码填到那里面，Widgets想要多少有多少……<br />
　　唉，害得我一个中午都在折腾GoogleAD的位置，这么简单就搞定了……<br />
　　修改了Cryptographp（验证码生成插件）的图片显示设置，使用了aqua candy图作为背景（都是apple风格吗，不知道aqua candy是什么？<a href="http://whyred.deviantart.com/art/Aqua-Candy-Walls-24276561">看这里</a>），各位留言的时候看得还习惯么？本想用这个主题本身的背景图，但截下来总是不好看，这个问题再议吧……<br />
　　尝试把整个aqua candy用来替换这个主题的背景图（想明亮一点），但是由于我配不好周围的一圈gif的颜色（背景是中间jpg，旁边gif，底下背景色)，怎么都看起来过渡很生硬，只得放弃，这个东西可以回学校再弄的吧。<br />
　　下午没时间，直到今天晚上才完全弄好，没想到classicning已经提前发现并且留言了……话说终于有最近留言功能了，可怜我自己不会写啊……<br />
　　近期准备尝试这个theme制作者的另一个Theme: <a href="http://www.ndesign-studio.com/resources/wp-themes/glossyblue/">GlossyBlue</a>，那个看起来要淡雅和低调一点……这个太apple感了，虽然我喜欢，但是似乎长久用起来有违本blog低调的定位……<br />
　　感谢各位对本blog的关注，特别是近几天能发现theme变化了的同学们……</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2007/08/change-theme-of-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新空间，新版本</title>
		<link>http://blog.williamgates.biz/2007/06/new-host-new-wordpress/</link>
		<comments>http://blog.williamgates.biz/2007/06/new-host-new-wordpress/#comments</comments>
		<pubDate>Sat, 30 Jun 2007 11:22:10 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2007/06/30/77</guid>
		<description><![CDATA[　　换了新的服务器，但还是原来的空间商，他居然告诉我续费96，新买36，新买没有任何限制……那我干吗不新买一个，刚好新服务器上的MySQL是4.1，可以用WordPress 2.2.1了。 　　买空间，备份，升级。把数据库导入的时候，发现我自己装的phpMyAdmin导出的sql文件，导入后都是乱码（在我自己的机器上正常，估计是 php配置的问题），幸好我当时用WordPress Database backup、WordPress phpMyAdmin和phpMyAdmin都备份过一次，用第二个，也就是WordPress的phpMyAdmin插件备份的文件，就可以搞定了（用什么导入倒无所谓，我就是用普通的phpMyAdmin导入的）。虽然导入后看到的是乱码，但WordPress一打开就是正常的了。建议大家备份 WordPress数据库的时候用各种方式多备份几份，特别是要在自己机器上导入一次试试看，能正常导入显示出非乱码（你自己的MySQL不可能不支持 UTF8吧），至少说明数据没损坏，然后再动手迁移也不迟。 　　最后一步升级2.2.1还遇到一个小问题，用迅雷从wordpress.net上面下载到的最新版本居然是2.0.5，必须用FF自己下载，才能下到2.2.1…… 　　另外提醒一句，在升级WordPress的时候要关闭所有插件，虽然这是官方一再强调的，大家却常常不以为然；但是我今天碰到的，WP-Cache导致我迁移后什么页面都打不开也无法登陆管理，只能删除所有非个人文件，重新升级的问题，可以算一个教训。 　　欢迎大家测试新空间的速度和新版本，看看有没有什么问题，特别是原来的插件在这里的效果。 　　另外，我英国那边买的1英镑的空间也开通了……这两天折腾一下，太爽了……哈哈哈哈哈哈哈 　　最后要说的就是 虽然是新空间，新版本 但是精心的文章和优质的访客服务不会变，欢迎各位常常来访~ Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　换了新的服务器，但还是原来的空间商，他居然告诉我续费96，新买36，新买没有任何限制……那我干吗不新买一个，刚好新服务器上的MySQL是4.1，可以用WordPress 2.2.1了。<br />
　　买空间，备份，升级。把数据库导入的时候，发现我自己装的phpMyAdmin导出的sql文件，导入后都是乱码（在我自己的机器上正常，估计是 php配置的问题），幸好我当时用WordPress Database backup、WordPress phpMyAdmin和phpMyAdmin都备份过一次，用第二个，也就是WordPress的phpMyAdmin插件备份的文件，就可以搞定了（用什么导入倒无所谓，我就是用普通的phpMyAdmin导入的）。虽然导入后看到的是乱码，但WordPress一打开就是正常的了。建议大家备份 WordPress数据库的时候用各种方式多备份几份，特别是要在自己机器上导入一次试试看，能正常导入显示出非乱码（你自己的MySQL不可能不支持 UTF8吧），至少说明数据没损坏，然后再动手迁移也不迟。<br />
　　最后一步升级2.2.1还遇到一个小问题，用迅雷从wordpress.net上面下载到的最新版本居然是2.0.5，必须用FF自己下载，才能下到2.2.1……<br />
　　另外提醒一句，在升级WordPress的时候要关闭所有插件，虽然这是官方一再强调的，大家却常常不以为然；但是我今天碰到的，WP-Cache导致我迁移后什么页面都打不开也无法登陆管理，只能删除所有非个人文件，重新升级的问题，可以算一个教训。</p>
<p>　　欢迎大家测试新空间的速度和新版本，看看有没有什么问题，特别是原来的插件在这里的效果。<br />
　　另外，我英国那边买的1英镑的空间也开通了……这两天折腾一下，太爽了……哈哈哈哈哈哈哈</p>
<p>　　最后要说的就是</p>
<blockquote><p>虽然是新空间，新版本<br />
但是精心的文章和优质的访客服务不会变，欢迎各位常常来访~</p></blockquote>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2007/06/new-host-new-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog系统升级</title>
		<link>http://blog.williamgates.biz/2007/06/upgrade-wordpress-2011/</link>
		<comments>http://blog.williamgates.biz/2007/06/upgrade-wordpress-2011/#comments</comments>
		<pubDate>Fri, 22 Jun 2007 17:18:00 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2007/06/23/74</guid>
		<description><![CDATA[　　突发奇想把WordPress升级到了2.0.11-RC2，因为没有MySQL4所以不能用2.1-2.2…… 　　实在受不了每天越来越多的垃圾留言，上网搜了一堆AntiSpam的，居然发现最牛的Blog系统WordPress的AntiSpam插件最缺乏也水平最差，绝大多数没法用，少部分会让我自己都不能登陆，其余的根本不支持如此新的版本…… 　　最后选用了cryptographp，感觉不错，只是里面的字太难了，我都认不出来……好不容易找到了一些官方配置文件，效果好多了…… 　　顺手安装了一堆插件，几乎没有一个能用的，看来插件作者的水平和更新速度都有待提高……最后发现了这个WP-Cache，效果不错，欢迎大家给出试用意见（浏览的速度是否变快了？） 　　最后要说的就是，突然发现人民群众真的是聪明……天下没有不能破解的东西……看这里，机器智能图片识别 Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　突发奇想把WordPress升级到了2.0.11-RC2，因为没有MySQL4所以不能用2.1-2.2……<br />
　　实在受不了每天越来越多的垃圾留言，上网搜了一堆AntiSpam的，居然发现最牛的Blog系统WordPress的AntiSpam插件最缺乏也水平最差，绝大多数没法用，少部分会让我自己都不能登陆，其余的根本不支持如此新的版本……<br />
　　最后选用了<a href="http://wordpress.org/extend/plugins/cryptographp/">cryptographp</a>，感觉不错，只是里面的字太难了，我都认不出来……好不容易找到了一些<a href="http://www.cryptographp.com/index.php">官方配置文件</a>，效果好多了……<br />
　　顺手安装了一堆插件，几乎没有一个能用的，看来插件作者的水平和更新速度都有待提高……最后发现了这个<a href="http://wordpress.org/extend/plugins/wp-cache/">WP-Cache</a>，效果不错，欢迎大家给出试用意见（浏览的速度是否变快了？）</p>
<p>　　最后要说的就是，突然发现人民群众真的是聪明……天下没有不能破解的东西……看<a href="http://sam.zoy.org/pwntcha/">这里</a>，机器智能图片识别</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2007/06/upgrade-wordpress-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级,没完没了</title>
		<link>http://blog.williamgates.biz/2007/02/update-forever/</link>
		<comments>http://blog.williamgates.biz/2007/02/update-forever/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 13:33:19 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[灌水胡诌]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[灌水]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2007/02/10/55</guid>
		<description><![CDATA[　　好久不写Blog了，随便灌一点水吧。 　　这说的可不是硬件的升级,没完没了的金钱投入，而是软件的升级，没完没了的精力、甚至数据的损失。 　　前几天，在听了1001遍NOD32的缺点之后，终于下决心把它卸载了，准备装Avast!。换杀毒软件有技巧，最好是先下载好新的软件和病毒库，断网，卸载旧的，重启再装，其间一直不联网。我本以为构想得挺严密的，结果，Avast!的免费版本不能用于我的Win2003，连收费的pro版本都不能，0day近5年只在2002年出过一个Server的版本……于是我不得不裸奔上网找新的杀毒软件。最终选择了小红帽AntiVir，广受好评的免费杀毒软件，但我觉得还是比NOD32占用资源多了，升级慢了…… 　　一不做二不休，把占用资源多的Google Deskop卸载，最有用的RSS阅读功能由Google Reader代替。我升级内存就是为了让Google Deskop不要再拖慢我的系统，现在装上了新内存，它倒被我清理了。至今没有找到替代，对桌面软件失去兴趣了。 　　今天，受了thebeatles升级z-blog的诱惑，想升级一下自己的WordPress，结果兴冲冲地下载了最新的2.1，升级的时候提示：2.1版本需要4.0以上的MySQL支持……我买的这个主机价格便宜，速度又快，稳定性没得说，唯一的问题就在于此……伤心啊，只能升级到2.0.8，除非我的服务商升级MySQL，否则这会是我今年blog的最高版本了(他们要是不升级我明年就换服务商)。 　　唉，升级，没完没了的升级。人的欲望是无止境的，人最大的欲望不是食欲性欲权力欲之类，而是对新事物的追求和探寻…… Related posts: 备份永远不嫌多]]></description>
			<content:encoded><![CDATA[<p>　　好久不写Blog了，随便灌一点水吧。<br />
　　这说的可不是硬件的升级,没完没了的金钱投入，而是软件的升级，没完没了的精力、甚至数据的损失。<br />
　　前几天，在听了1001遍NOD32的缺点之后，终于下决心把它卸载了，准备装Avast!。换杀毒软件有技巧，最好是先下载好新的软件和病毒库，断网，卸载旧的，重启再装，其间一直不联网。我本以为构想得挺严密的，结果，Avast!的免费版本不能用于我的Win2003，连收费的pro版本都不能，0day近5年只在2002年出过一个Server的版本……于是我不得不裸奔上网找新的杀毒软件。最终选择了<a href="http://www.free-av.com/">小红帽AntiVir</a>，广受好评的免费杀毒软件，但我觉得还是比NOD32占用资源多了，升级慢了……<br />
　　一不做二不休，把占用资源多的Google Deskop卸载，最有用的RSS阅读功能由Google Reader代替。我升级内存就是为了让Google Deskop不要再拖慢我的系统，现在装上了新内存，它倒被我清理了。至今没有找到替代，对桌面软件失去兴趣了。<br />
　　今天，受了<a href="http://www.classicning.com/blog/">thebeatles</a>升级z-blog的诱惑，想升级一下自己的WordPress，结果兴冲冲地下载了最新的2.1，升级的时候提示：2.1版本需要4.0以上的MySQL支持……我买的这个主机价格便宜，速度又快，稳定性没得说，唯一的问题就在于此……伤心啊，只能升级到2.0.8，除非我的服务商升级MySQL，否则这会是我今年blog的最高版本了(他们要是不升级我明年就换服务商)。<br />
　　唉，升级，没完没了的升级。人的欲望是无止境的，人最大的欲望不是食欲性欲权力欲之类，而是对新事物的追求和探寻……</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/backup-and-backup-more/' rel='bookmark' title='备份永远不嫌多'>备份永远不嫌多</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2007/02/update-forever/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>迁移和升级WordPress的心得</title>
		<link>http://blog.williamgates.biz/2006/11/move-and-upgrade-wordpress-205/</link>
		<comments>http://blog.williamgates.biz/2006/11/move-and-upgrade-wordpress-205/#comments</comments>
		<pubDate>Wed, 01 Nov 2006 13:23:42 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2006/11/01/38</guid>
		<description><![CDATA[　　最近搬迁了我的BLog，从校内自己拥有的服务器转移到公网仅支持php/MySQL的空间，从WordPress2.0.4升级为2.0.5，MySQL从5.0.21转移到3.23.58，其间遇到不少麻烦，也学得一些技巧，下面简单谈谈心得。 　　一、数据库的备份 　　从自己的服务器上备份数据库，本以为是很容易的事情，谁知却总也无法在phpMyAdmin中导入，用另外的方法（后文提到）导入时，看到的所有文章都是乱码。后来发现，WordPress默认的数据库编码是UTF-8，而我用的图形化MySQL管理器Navicat MySQL默认的数据库联接虽然显示的是UTF-8，但事实上还是需要手动设置：Connection Properties-Advanced，把Use MySQL character set的钩去掉，然后选择Encoding为UTF-8，然后联接数据库，再开始备份(用Export Wizard)出来的SQL文件就不是乱码了。网上所说的修改SQL文件、用Word打开等等方法，全都是不必要的。 　　备份以下几个表 williamgates_categories williamgates_comments williamgates_linkcategories williamgates_post2cat williamgates_posts 　　建议不要备份其他表(会导致一些问题，建议你把其他表的内容自己手动在新blog中重新设置一下)。要注意的是，我的表前缀是williamgates，这个要在wp-config.php中设置 $table_prefix = 'williamgates_'; 　　这是你一开始安装WordPress时选择的设置，一般来说没有我这种情况。 　　二、数据库的导入 　　要导入数据库的时候，碰到了新的麻烦。使用公网新空间提供的phpMyAdmin，运行SQL文件总是提示出错。这篇和这篇文章提供了解决办法。 　　事实证明，mysqldump出来的数据库是乱码(所以我用了图形管理端来备份)，但是php代码写的导入功能还是非常有用的： &#60; ?php `mysql -uroot -pxxxxxx dbname &#60;db.sql`?&#62; 　　其中-u表示用户名是root，-p表示密码是xxxxxx，dbname是数据库名，db.sql是SQL文件的名称（注意在apache中运行的时候区分大小写，且前面的左尖括号后面必须有空格） 　　把这个php和sql上传到空间，再访问这个php的地址，很快就导入了，再看看自己的blog，嘿嘿，已经全都好了。 　　要注意的是，导入前建议清空我前面建议的几个表，其他表不要动，否则会导致用户管理上的某些奇怪问题(有时候没有第一行的表没法被写入)。 　　三、WordPress的重新配置和升级 　　首先要在导入数据库前安装好wp2.0.4(与迁移前同版本)，由于我建议不要备份设置，所以所有的设置你都需要自己修改，注意这两个： WordPress address (URI): Blog address (URI): 　　肯定是要修改的 　　然后在进行了上一步导入数据后，下载2.0.5(在我部署好之后8个小时就发布了新版，真不给面子)，然后删除原来的文件，并且运行wp-admin/upgrade.php，就升级好了。原来的blog里的上载文件可以在升级前或者升级后复制过来，都一样的。 　　(升级教程见http://codex.wordpress.org/Upgrading_WordPress) 　　四、新空间的维护和备份 　　新的空间里，要使用WordPress Database Backup(在我的旧空间无法使用，原因不明)，以后数据库导出就用它就可以了(最好不要用php代码和phpMyAdmin的导出功能。特别是在我的服务商提供的MySQL和phpMyAdmin版本都极为陈旧的情况下……) 　　另外建议时常备份自己的数据库、上载文件甚至整个blog，毕竟部署一次还是很痛苦的，特别是像我这样喜欢自定义的人(要注意备份theme下面自己捣鼓修改的页面文件)。 Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　最近搬迁了我的BLog，从校内自己拥有的服务器转移到公网仅支持php/MySQL的空间，从WordPress2.0.4升级为2.0.5，MySQL从5.0.21转移到3.23.58，其间遇到不少麻烦，也学得一些技巧，下面简单谈谈心得。</p>
<p>　　一、数据库的备份<br />
　　从自己的服务器上备份数据库，本以为是很容易的事情，谁知却总也无法在phpMyAdmin中导入，用另外的方法（后文提到）导入时，看到的所有文章都是乱码。后来发现，WordPress默认的数据库编码是UTF-8，而我用的图形化MySQL管理器Navicat MySQL默认的数据库联接虽然显示的是UTF-8，但事实上还是需要手动设置：Connection Properties-Advanced，把Use MySQL character set的钩去掉，然后选择Encoding为UTF-8，然后联接数据库，再开始备份(用Export Wizard)出来的SQL文件就不是乱码了。网上所说的修改SQL文件、用Word打开等等方法，全都是不必要的。<br />
<span id="more-38"></span><br />
　　备份以下几个表</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">williamgates_categories
williamgates_comments
williamgates_linkcategories
williamgates_post2cat
williamgates_posts</pre></div></div>

<p>　　建议不要备份其他表(会导致一些问题，建议你把其他表的内容自己手动在新blog中重新设置一下)。要注意的是，我的表前缀是williamgates，这个要在wp-config.php中设置</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">$table_prefix  <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'williamgates_'</span>;</pre></div></div>

<p>　　这是你一开始安装WordPress时选择的设置，一般来说没有我这种情况。</p>
<p>　　二、数据库的导入<br />
　　要导入数据库的时候，碰到了新的麻烦。使用公网新空间提供的phpMyAdmin，运行SQL文件总是提示出错。<a href="http://www.ooso.net/index.php/archives/224">这篇</a>和<a href="http://www.ooso.net/index.php/archives/186">这篇</a>文章提供了解决办法。<br />
　　事实证明，mysqldump出来的数据库是乱码(所以我用了图形管理端来备份)，但是php代码写的导入功能还是非常有用的：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php `<span style="color: #990000;">mysql</span> <span style="color: #339933;">-</span>uroot <span style="color: #339933;">-</span>pxxxxxx dbname <span style="color: #339933;">&lt;</span>db<span style="color: #339933;">.</span>sql`<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>　　其中-u表示用户名是root，-p表示密码是xxxxxx，dbname是数据库名，db.sql是SQL文件的名称（注意在apache中运行的时候区分大小写，且前面的左尖括号后面必须有空格）<br />
　　把这个php和sql上传到空间，再访问这个php的地址，很快就导入了，再看看自己的blog，嘿嘿，已经全都好了。<br />
　　要注意的是，导入前建议清空我前面建议的几个表，其他表不要动，否则会导致用户管理上的某些奇怪问题(有时候没有第一行的表没法被写入)。</p>
<p>　　三、WordPress的重新配置和升级<br />
　　首先要在导入数据库前安装好wp2.0.4(与迁移前同版本)，由于我建议不要备份设置，所以所有的设置你都需要自己修改，注意这两个：</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">WordPress address (URI): 
Blog address (URI):</pre></div></div>

<p>　　肯定是要修改的</p>
<p>　　然后在进行了上一步导入数据后，下载2.0.5(在我部署好之后8个小时就发布了新版，真不给面子)，然后删除原来的文件，并且运行wp-admin/upgrade.php，就升级好了。原来的blog里的上载文件可以在升级前或者升级后复制过来，都一样的。<br />
　　(升级教程见http://codex.wordpress.org/Upgrading_WordPress)</p>
<p>　　四、新空间的维护和备份<br />
　　新的空间里，要使用WordPress Database Backup(在我的旧空间无法使用，原因不明)，以后数据库导出就用它就可以了(最好不要用php代码和phpMyAdmin的导出功能。特别是在我的服务商提供的MySQL和phpMyAdmin版本都极为陈旧的情况下……)<br />
　　另外建议时常备份自己的数据库、上载文件甚至整个blog，毕竟部署一次还是很痛苦的，特别是像我这样喜欢自定义的人(要注意备份theme下面自己捣鼓修改的页面文件)。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2006/11/move-and-upgrade-wordpress-205/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

