Daily Archives: 2010年2月7日

エラーの原因特定は「消去法」で!

いくつかのNPO関連サーバの管理のお手伝いをしている関係で、ときどき同じような連絡をいただく。

たとえば、「サイトが文字化けしているから直してほしい」

残念ながら、症状だけいわれても対応のしようがない。
文字化けしているurlはどこ?
いつから? いつ気づいたの?
再現性は? 規則性はある?
等々、原因を探るための情報が1つでも多くほしい。
サーバの設定に原因があるのか、サイトの設定に原因があるのかで対処方法は全く違う。

今までの鯖缶経験から、原因を特定するには「消去法」しかないと考えている。
まず最初に「症状」から想定される原因を10~20ぐらい考えてみる。
あとは、様々な状況証拠から、論理的に原因でないものを消去していく。

延々とその作業を繰り返すことで、最後に2,3の原因と思われるものが残る。そこから原因を特定するのであれば意外と容易である。

時たまひらめきで原因が特定できることもあるが、大半は地道な作業の繰り返しである。いったん坩堝にはまれば、数日間原因探しに没頭することもある。(年をとるとこの作業が偉いしんどい。)

原因が特定できれば、対処方法は必然的に決まってくる。

07 2月 2010

newsモジュールで「ページがありません」

同じxoopsの話題。

centos4(php4+mysql4.1)上で作成したxoopsサイトをcentos5(php5+mysql5.0)に移動したところ、newsモジュールでページファイルがあるのに「ページがありません」とエラーメッセージが出る。

なぜ、なぜ、なぜ? 3日はまってやっと解決策を探し出す。

php.iniで、デフォルトで
register_long_arrays = Off
になっているところを
register_long_arrays = On
に変更する。
このあとapacheのreloadを忘れずに。

これでようやくnewsページが表示された。
えらい疲れた。

07 2月 2010

picoで~(波形)を投稿すると文字化けする

xoopsのサーバ移設ではずいぶんと泣かされた。
正確に言うと、mysqlの環境が変わっただけで、簡単に文字化けやエラーに見舞われる。

そんななかで、今回は「picoで~(波形)を投稿すると文字化けする」ことの対処法について。

同じcentos5同士でサイトを移動したのに、picoモジュールで~(波形)を投稿すると文字化けする事態が発生した。ともにmysql5.0の同じバージョンなのになぜ???

いろいろ調べてみると、dbの文字セットと生成されるtableの文字コードがそれぞれ異なっていたのが原因だった。

解決策は、
1. SHOW VARIABLES LIKE “char%” で文字セットを調べてみる。
2. character_set_database ujis となっていたら、ALTER DATABASEでutf8に変更する。
3. 既存のpicoのコンテンツテーブルなどは
ALTER TABLE ***_pico_contents CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
で文字コードを変更する。

これで、再度 ~ を投稿してみたところ文字化けしなくなった。
これはほかの投稿用モジュールでも共通して言えるようである。

んんん、毎度のことながらdbの文字セットは奥深い。

07 2月 2010