frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

OpenPNE。

「最近、anney's room、重くない?」と思ったあなた。

はい、大正解。

何故なら水面下で、SNSをオープンしていたからです。

そして、そのSNSで使用しているDBを

この「frei」や「Mac日記」でも使っていて、

負荷がかかり過ぎていたのであります。

かくして、SNSはanigon.netのサーバーに移転。

こちらは重くなくなったはずなのですが。

とにかく、サーバー移行するのに、エラー出まくって大変だった…(遠い目)

そのSNS、自分で全部作る気は勿論(?)なくて

OpenPNE」を使っていたのですが。

どんなエラーに、どんな風に対応したのかメモっておきます。

画像がアップできなくなった

具体的には、getimagesize関数でコケていた。

→form のファイルアップ時にデータの置かれる

 テンポラリディレクトリ(/tmp)のパーミッションが原因。

 ドイツのサーバー上では、特別な場所が指定されていて

 パーミッションが 770 だったが、

 webユーザーと、テンポラリディレクトリのユーザーとは

 別のグループに所属していたので、書き込み権限等がなかった。

 パーミッションを、嫌な気分だけど、777 にして解決。

日付が狂った

なんせ基準はドイツ時間ですから、そりゃ狂います。

PHPが5なら、関数でタイムゾーンを設定できるらしいが

 サーバー上のPHPは、4系だったので、途方に暮れる。

 当然、レンタルサーバーなので、php.ini の変更も不可。

 

 環境変数 TZ を変更しようと putenv("TZ==JST-9"); を実行しても

 セーフモードになってて実行不可能。

 仕方ないので、スクリプト中の date や gmmktime を検索して

 全て手作業で修正(苦笑)

 なお、記憶が正しければ、一番修正箇所が多かったのは

 /OPENPNE_DIR/webapp/lib/db/read/ 以下。

 修正する際に、代替関数をオリジナルで用意して、この関数と入れ替えた。

define('TIME_DIFFERENCE_GERMANY_IN_SUMMERTIME', 7);

define('TIME_DIFFERENCE_GERMANY', 8);

function anigonDate($format, $time = '') {

if (empty($time)) $time = time();

$timeDifference = (date('I'))

? TIME_DIFFERENCE_GERMANY_IN_SUMMERTIME

: TIME_DIFFERENCE_GERMANY;

return date($format, $time + $timeDifference*3600);

}

 今後もし、また日本のサーバーや、どっか海外のサーバーに移動した場合も

 この関数内を書き換えれば対応出来るので、便利。

メールが飛ばなくなった

とにかく全てのメールが送信できなくなった。

→config.php 中の

 「// Envelope-From ヘッダを設定するかどうか(safe_mode の場合は false に設定してください)」の部分を

 「define('MAIL_SET_ENVFROM', false);」に変更。

 そこに書いてあるように、セーフモードなんで、falseじゃないと送信出来ないみたいですわ。

管理人用ページ上だけで「Division by zero in…」なるエラーが出る

早い話、本来なら、request の値として取得できるはずの値が全部空になっていて

それが 0 として見なされたせいで、割り算しているところで、上記のエラーになっていた。

→管理人用ページで用いるバリデータ用設定ファイルをFTPで転送途中で止まっていた。

 再度、全設定ファイルをアップしたら問題解決した。

 おまけ:

 request の値はどこで設定しているのか調べようと

 index.php 以降の流れを追ってみた。

 (管理人用ページで、メンバー一覧を見ようとした時)

 index.php

   ↓

 /OPENPNE_DIR/webapp/lib/controller.php

 openpne_execute関数

 openpne_forward関数

   ↓

 /OPENPNE_DIR/webapp/lib/OpenPNE/Validator/Common.php

 common_validate関数

   ↓

 /OPENPNE_DIR/webapp/lib/OpenPNE/Validator.php

 validate関数

 getParams関数

   ↓

 /OPENPNE_DIR/webapp/modules/admin/page/list_c_member.php

 execute関数

   ↓

 /OPENPNE_DIR/webapp/modules/admin/lib/db_admin.php

 db_admin_c_member_list関数

 …と、こんな感じ。

うーん、他にもいろいろ細かい事があったんだけど

一気に作業したから、全部は覚えてない…。すいません。