OpenPNE 2.10 PostgreSQL版
友人が集うwebサイトをSNSのシステムでということになり、SNSのシステムを当たっていたのだけど、
システム要件に合うのがOpenPNEしかなかった。
もしかしたら他にもあって、調査しきれていないだけかもしれないが。
2.10からPostgreSQL対応ということで、2.10がリリースされるのを待っていたのだけど、
先日リリースされたので、早速試してみた。
試した環境は、Debian GNU/Linux etch で構築したサーバです。
システム要件に合うのがOpenPNEしかなかった。
もしかしたら他にもあって、調査しきれていないだけかもしれないが。
2.10からPostgreSQL対応ということで、2.10がリリースされるのを待っていたのだけど、
先日リリースされたので、早速試してみた。
試した環境は、Debian GNU/Linux etch で構築したサーバです。
まずサーバの要件構築。
初めは、apache2.2、PHP5.2、PostgreSQL8.1、Postfixで環境構築。
といっても、既存環境としてすでにセットアップ済みで試したのだけど。
なので、基本的な構築については説明を省く。また要点だけかいつまんでレポート。
PHPのバージョン
結論としてはPHP5.2では動かなかった。
一応動くのだけど、SNSの初期化でフォームに入力して送信したときにエラーが発生してセットアップができない。
推測だが、5.2から言語仕様が変更になり、__toStringメソッドがないオブジェクトをstringに変換しようとすると例外が発生しエラーになる。
これに対応できていないみたい。
バグレポあげたが、再現不能となっているので、きちんと調査しておけばよかったかな。
PostgreSQLのクエリパラメータのエスケープ処理にPEAR使っているが、それが5.2に対応していないバージョンのせいではないか?という話もでた。
結局4.4に入れ直すことで解決してしまったので、本当のところはなんともいえない
セットアップマニュアル他
PostgreSQL版のほうは、添付されているセットアップマニュアルが古い。
2.8ベースとなっていて、2.10を使用するために必要な情報が不足している。
例えばセットアップ用SQLがあるのだが、installに入っているのは2.8用だ。
ここから、upgradeフォルダに入っているSQLを実行しなければいけないようだが、どのSQLをどの順番でどれだけ実行しなければいけないのか不明だ。
2.10用のセットアップガイドとセットアップSQLは、以下のURLにあるので、そちらを別途ダウンロードしてきて使った方がよい
セットアップガイド
http://trac.openpne.jp/changeset/4535
セットアップSQL
http://trac.openpne.jp/changeset/4534
2.8用のセットアップSQLを実行しただけでは、テーブル定義が異なる部分があり、いくつか基本的な機能でSQLクエリエラーがでる。
PHPの設定
これが非常に悩ませられた。
特にmbstring関係。
mbstring関係の設定値がきめうちで処理が書かれているが、どういう設定を前提としているか書かれた文書はない。
現在確認しているものとしては、以下のものがある。
これがonだと携帯からの投稿で文字化けが発生する。
携帯から投稿されたデータはJIS系である前提で、エンコード変換を内部でかけている。
この設定値がonになっていると、PHPが自動的にエンコード処理してUTF-8にしたものを、さらにUTF-8にコンバートする処理が入ることになるのだ。
mail関数をオーバーロードする設定にしていると問題が発生する。
subjectのエンコード処理を内部でやっているため、オーバーロードしているとさらにエンコード処理され、subjectが壊れる。
とりあえずこのあたりに気をつけるだけで、後は普通につかえるみたいだ。
まだすべての機能をためしたわけではないので、まだ見ぬトラブルもあるかもしれないが。
OpenPNEはいろいろと噂も絶えないが、要件満たすのがこれしかないので致し方ない。
初めは、apache2.2、PHP5.2、PostgreSQL8.1、Postfixで環境構築。
といっても、既存環境としてすでにセットアップ済みで試したのだけど。
なので、基本的な構築については説明を省く。また要点だけかいつまんでレポート。
PHPのバージョン
結論としてはPHP5.2では動かなかった。
一応動くのだけど、SNSの初期化でフォームに入力して送信したときにエラーが発生してセットアップができない。
推測だが、5.2から言語仕様が変更になり、__toStringメソッドがないオブジェクトをstringに変換しようとすると例外が発生しエラーになる。
これに対応できていないみたい。
バグレポあげたが、再現不能となっているので、きちんと調査しておけばよかったかな。
PostgreSQLのクエリパラメータのエスケープ処理にPEAR使っているが、それが5.2に対応していないバージョンのせいではないか?という話もでた。
結局4.4に入れ直すことで解決してしまったので、本当のところはなんともいえない
セットアップマニュアル他
PostgreSQL版のほうは、添付されているセットアップマニュアルが古い。
2.8ベースとなっていて、2.10を使用するために必要な情報が不足している。
例えばセットアップ用SQLがあるのだが、installに入っているのは2.8用だ。
ここから、upgradeフォルダに入っているSQLを実行しなければいけないようだが、どのSQLをどの順番でどれだけ実行しなければいけないのか不明だ。
2.10用のセットアップガイドとセットアップSQLは、以下のURLにあるので、そちらを別途ダウンロードしてきて使った方がよい
セットアップガイド
http://trac.openpne.jp/changeset/4535
セットアップSQL
http://trac.openpne.jp/changeset/4534
2.8用のセットアップSQLを実行しただけでは、テーブル定義が異なる部分があり、いくつか基本的な機能でSQLクエリエラーがでる。
PHPの設定
これが非常に悩ませられた。
特にmbstring関係。
mbstring関係の設定値がきめうちで処理が書かれているが、どういう設定を前提としているか書かれた文書はない。
現在確認しているものとしては、以下のものがある。
mbstring.encoding_translation = offこれがonだと携帯からの投稿で文字化けが発生する。
携帯から投稿されたデータはJIS系である前提で、エンコード変換を内部でかけている。
この設定値がonになっていると、PHPが自動的にエンコード処理してUTF-8にしたものを、さらにUTF-8にコンバートする処理が入ることになるのだ。
mbstring.func_overload = 0mail関数をオーバーロードする設定にしていると問題が発生する。
subjectのエンコード処理を内部でやっているため、オーバーロードしているとさらにエンコード処理され、subjectが壊れる。
とりあえずこのあたりに気をつけるだけで、後は普通につかえるみたいだ。
まだすべての機能をためしたわけではないので、まだ見ぬトラブルもあるかもしれないが。
OpenPNEはいろいろと噂も絶えないが、要件満たすのがこれしかないので致し方ない。
カテゴリ:
OpenPNE
,
PHP
,
PostgreSQL
トラックバック
このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/50
コメントする