ざっくりとセットアップの内容をメモします。
3.4.8 というバージョンをダウンロードしました。
ファイル名はopenpne-OpenPNE3-OpenPNE-3.4.8-0-gb9d705e.zip
- zip ファイルを解凍して DOCUMENT_ROOT 以外の任意の場所に保存します。
- OpenPNE.yml 作成
- ProjectConfiguration.class.php 作成
- DB 作成
- インストール
- web ディレクトリを公開ディレクトリから参照できるようにシンボリックリンクを作成
- .htaccess 変更
- ブラウザからアクセス
- 再度ブラウザでアクセス
/usr/local/apache2/OpenPNE3 に解凍しました。
$ cd /usr/local/apache2/OpenPNE3 $ cp config/OpenPNE.yml.sample config/OpenPNE.yml $ vi config/OpenPNE.yml |
base_url と mail_envelope_from を環境に合わせたモノに変更しました。
特に変更せずデフォルトのままです。
$ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php |
openpne3db という名前で作成しました。
mysql> CREATE DATABASE open3db DEFAULT CHARACTER SET utf8; |
そして、openpne ユーザがパスワード openpne で接続できるようにユーザを作成しました。
mysql> GRANT ALL ON *.openpne3db TO 'openpne'@'localhost' IDENTIFIED BY 'openpne'; |
対話的形式でデータベースへの接続情報を設定をした後、色々と表示されますが、
意味が分かりませんでした。
$ ./symfony openpne:install |
公開ディレクトリを /usr/local/apache2/htdocs として説明します。
/sns というサブディレクトリに公開します。
サーバ名を www.example.com とすると、URL は http://www.example.com/sns/ になります。
$ cd /usr/local/apache2/htdocs $ ln -s ../OpenPNE3/web sns |
RewriteBase 変更
$ vi web/.htaccess |
RewriteBase を /sns/ に変更しました。
http://www.example.com/sns/
ページは表示されますが、CSS が適用されていない状態です 😥
apache の error_log を見たら DOCUMENT_ROOT 直下の opSkinBasicPlugin を
参照している事が分かったので、DOCUMENT_ROOT に opSkinBasicPlugin/web へ
のシンボリックリンクを作成しました。
# cd /usr/local/apache2/htdocs # ln -s ../OpenPNE3/plugins/opSkinBasicPlugin/web opSkinBasicPlugin |
簡単に参照先を変更できるかと思ったのですが、調べても分からなかったのでシンボリックリンクで対応してしまいました。
CSS が適用されたデザインされたページになりました 🙂
プリセットされているユーザでログインします。
メールアドレス: sns@example.com
パスワード: password
すると今度は以下のエラー 😥
現在、サーバが混み合っているか、メンテナンス中です。
ご迷惑をおかけいたしますが、しばらく時間を空けて再度アクセスしてください。
Currently, our service is too busy or is under maintenance.
We're sorry and please retry accessing later. |
またまた apache の error_log を見ると以下が記録されていました。
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ev er going to run against mysql, you may enable query buffering by setting the PDO ::MYSQL_ATTR_USE_BUFFERED_QUERY attribute., referer: http://www.example.com/sns/ pc_backend.php/ |
エラーメッセージのとおり、PDO::MYSQL_ATTR_USE_BUFFERED_QUERY を true
にする必要があるようです。
色々と調べたところ以下のファイルを変更したところ解決しました。
(これで正しいのかわかりませんが 😎 )
lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php |
以下のように PDO::MYSQL_ATTR_USE_BUFFERED_QUERY を追加。
public function connect() { $connected = parent::connect(); $this->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); return $connected; } |
これでとりあえず動くようになりました 🙂
※この対応方法は DB が MySQL の場合にのみ有効です