<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: the lost utf8 encoding</title>
    <link>http://blog.extremepattern.com/articles/2006/09/21/the-lost-utf8-encoding</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>the lost utf8 encoding</title>
      <description>&lt;h3&gt;更新紀錄&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;2006-1001 還是發生亂碼現象，這次進去看才發現原來之前的設定 /usr/bin/env ruby 並不一定會抓 /home/foo/bin/ruby 而是根據 fcgi 的設定，往往是 /usr/bin/ruby-1.8。之前如減少 500 建議又加上 frao_handler 試圖 reload 被 DH 定時砍的 fcgi ，也許在 reload 時出現問題 ? 刪除後觀察看看。&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;之前一直遭遇亂碼問題 &lt;a href="/articles/2006/08/20/typo-4-post-install"&gt;typo 4 post install&lt;/a&gt; ，終於到了需要攤牌的時候，經過一陣子觀察，發現混用環境會用到同帳號下面其他虛擬主機的 MySQL 連線，而剛好這個 foo 虛擬主機只是測試用，並沒有正常設定資料庫需要的  encoding 連結參數，這下子就慘了。&lt;/p&gt;


&lt;pre&gt;
$ ps aux | grep xxx
xxx 20120  0.2  0.6 29140 26564 ?       S    19:07   0:02 ruby dispatch.fcgi
xxx 26233  0.4  0.9 46028 36960 ?       S    19:08   0:04 ruby dispatch.fcgi
xxx 11270  0.2  0.6 29140 26568 ?       S    19:11   0:02 ruby dispatch.fcgi
xxx 14002  0.0  0.0  6488 1880 ?        S    19:19   0:00 sshd: linthink@pts/6
xxx  6930  0.0  0.0  4788 1684 pts/6    Ss   19:19   0:00 -bash
xxx 13610  0.8  0.6 29140 26556 ?       S    19:20   0:02 ruby dispatch.fcgi
xxx  9397  0.7  0.5 24684 22136 ?       S    19:22   0:01 /usr/bin/ruby1.8 dispatch.fcgi
xxx  4355  0.0  0.0  2484  860 pts/6    R+   19:24   0:00 ps aux
xxx 24377  0.0  0.0  4788 1688 pts/6    R+   19:24   0:00 -bash
&lt;/pre&gt;

	&lt;p&gt;一發生亂碼現象，馬上連進去看看現場，發現 ruby1.8 這個行程應該不存在，這是系統提供的 ruby ，但是我的 blog 站 typo 確是用私有 ruby，這代表有人在使用 foo 虛擬主機下的服務。&lt;/p&gt;


&lt;pre&gt;
$ ls -al /proc/9397/
-r--r--r--    1 xxx sasl 0 2006-09-21 19:25 cpu
lrwxrwxrwx    1 xxx sasl 0 2006-09-21 19:25 cwd -&amp;gt; /kkk/foo.extremepattern.com/public
-r--------    1 xxx sasl 0 2006-09-21 19:25 environ
lrwxrwxrwx    1 xxx sasl 0 2006-09-21 19:25 exe -&amp;gt; /usr/bin/ruby1.8
&lt;/pre&gt;

	&lt;p&gt;進去 proc 看看，果然是虛擬主機 foo，先試著關掉 dispatch.fcgi 看看。&lt;/p&gt;


&lt;pre&gt;
$ cd foo.extremepattern.com/public
$ mv .htaccess htaccess.bak
&lt;/pre&gt;

	&lt;p&gt;kill 這個不速之客後，reload 部落格網頁，還是喚起這個屬於
 foo 的連線，猜測應該是某種連接池關係，所以還是一堆亂碼。只好把其他 ruby 行程全砍，然後再進 typo 管理將快取清過，總算恢復編碼正常。&lt;/p&gt;


	&lt;h3&gt;一小時代價&lt;/h3&gt;


	&lt;p&gt;看了一下，發現之前不注意，有一篇文章被上面的程序，導致亂碼污了資料庫，先到 phpmyadmin 查到這筆紀錄
更改時間是 2006-09-05 18:35:21，再去找備份 sql 截取出這段紀錄，重新貼上。同時這代表後來逐日備份全部
遭到污染。&lt;/p&gt;


	&lt;h3&gt;結論&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;同一個帳號環境要一樣&lt;/li&gt;
		&lt;li&gt;備份很重要，舊的不要刪掉&lt;/li&gt;
		&lt;li&gt;小問題還是要先解決，亂碼污染資料庫到幾百筆就難清了&lt;/li&gt;
		&lt;li&gt;rails 共用環境是新的需求，遠不如 &lt;span class="caps"&gt;PHP&lt;/span&gt; 等共用環境穩定。&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Thu, 21 Sep 2006 19:40:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:da7d781d-0457-4d90-8cbd-c82147da74a5</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/09/21/the-lost-utf8-encoding</link>
      <category>typo</category>
      <category>hosting</category>
      <category>rails</category>
    </item>
  </channel>
</rss>
