symfony serverではまる
2006.05.10 Wednesday 00:31
0.6.2も出たことだしと久々にsymfonyにチャレンジしたところ,またも大はまり.0.6.2で追加された機能である"symfony server"をwebサーバとして使ったら全然まともに動かなかった.
作業用PCにPHP5.1とpostgresql 8.1をインストールし,webサーバはとりあえずsymfony serverでやろうとして作業開始.ところがpropel-init-adminとかで作ったものがまともに動かない.
DBの中の物は表示されるのだが更新が全く動作していない様子.フィールドに入力してから"Save"してもデータが全く変わっていない.
ログにidフィールド(primary key)が入っておらず,生成されたSQLを見るとautoIncrement設定がフィールドに入っていなかったことから,postgreSQLのサポートがあんまり良くないと思いこみ,まずはmySQLでチュートリアルが動くか確認しようとmySQLをインストール.
しかし,チュートリアルもまともに動かない.こちらでauto increment機構は期待通り動く物の,日付以外のフィールドが全てNULLになってしまった.
ログとソースを付け合わせながら見ていたところ,ふとSELECT文はログにあるのにINSERTやUPDATEが全くないことに気が付いた.ソースを見たらSQLを使う場合には必ずログに残るようになっていることがわかったのでDBを更新しようとすらしていないとわかる.
また,このあたりでsymfonyのフォーラムを調べ始め,postgreSQLでも動かしている人がいることや,postgreSQL用のSQLにはSEQUENCEオブジェクトが作成されていることを確認し,auto incrementは関係ないかなと思う.
そのうち当初から見えていたのに無視し続けていた「ヘッダが設定できなかった」という警告がふと気になってtelnetでつないで出力を見てみたら,cookieとかのヘッダが全く出ていない.以前setupしたままとなっているサーバに対して同様のことを行うとcookieを送ってくる.
もしかして,cookieが無くてセッション管理が出来ないためか?と思い,ここでやっとApacheでちゃんとやろうという気になった.(実はここでも横着しようとしてAnHttpdを入れた物のうまく動かず5分であきらめたのは内緒)
で,Windows版のApache 2.0.58をインストールしてphpの設定を行い,それっと実行したら,期待通りにさくっとうごいてしまったではないか.最初に作ったpostgreSQLのものもmySQLを使ったチュートリアルも両方である.(厳密にはチュートリアルはsqliteを使っていたが,sqliteもうまく動かなかった)
結局何故動かなかったのかは未だわからないままだが,symfony serverが壮大な罠.というかたかがApacheごときで横着しようとした自分もなんだか...
symfonyの初期状態ではサイトのルートディレクトリに置くコードとなっているので,手軽にそのときだけのwebサーバを使えれば便利だなと思って試したのが運の尽き.Apacheを入れた後で気付いたことだが,symfony 0.6.2から改善されたexception出力もsymfony serverを使っているとサーバ自体がexceptionを出して停止してしまい,ブラウザはセッションが切れてしまうので,この恩恵は受けられない.
DBの中の物は表示されるのだが更新が全く動作していない様子.フィールドに入力してから"Save"してもデータが全く変わっていない.
ログにidフィールド(primary key)が入っておらず,生成されたSQLを見るとautoIncrement設定がフィールドに入っていなかったことから,postgreSQLのサポートがあんまり良くないと思いこみ,まずはmySQLでチュートリアルが動くか確認しようとmySQLをインストール.
しかし,チュートリアルもまともに動かない.こちらでauto increment機構は期待通り動く物の,日付以外のフィールドが全てNULLになってしまった.
ログとソースを付け合わせながら見ていたところ,ふとSELECT文はログにあるのにINSERTやUPDATEが全くないことに気が付いた.ソースを見たらSQLを使う場合には必ずログに残るようになっていることがわかったのでDBを更新しようとすらしていないとわかる.
また,このあたりでsymfonyのフォーラムを調べ始め,postgreSQLでも動かしている人がいることや,postgreSQL用のSQLにはSEQUENCEオブジェクトが作成されていることを確認し,auto incrementは関係ないかなと思う.
そのうち当初から見えていたのに無視し続けていた「ヘッダが設定できなかった」という警告がふと気になってtelnetでつないで出力を見てみたら,cookieとかのヘッダが全く出ていない.以前setupしたままとなっているサーバに対して同様のことを行うとcookieを送ってくる.
もしかして,cookieが無くてセッション管理が出来ないためか?と思い,ここでやっとApacheでちゃんとやろうという気になった.(実はここでも横着しようとしてAnHttpdを入れた物のうまく動かず5分であきらめたのは内緒)
で,Windows版のApache 2.0.58をインストールしてphpの設定を行い,それっと実行したら,期待通りにさくっとうごいてしまったではないか.最初に作ったpostgreSQLのものもmySQLを使ったチュートリアルも両方である.(厳密にはチュートリアルはsqliteを使っていたが,sqliteもうまく動かなかった)
結局何故動かなかったのかは未だわからないままだが,symfony serverが壮大な罠.というかたかがApacheごときで横着しようとした自分もなんだか...
symfonyの初期状態ではサイトのルートディレクトリに置くコードとなっているので,手軽にそのときだけのwebサーバを使えれば便利だなと思って試したのが運の尽き.Apacheを入れた後で気付いたことだが,symfony 0.6.2から改善されたexception出力もsymfony serverを使っているとサーバ自体がexceptionを出して停止してしまい,ブラウザはセッションが切れてしまうので,この恩恵は受けられない.
Comments