symfonyチュートリアル実践【第1~2日目】

24日分に分かれたチュートリアルの1~2日目3日目は非公式?)は日本語訳もありますがあきらめて英語のチュートリアル参照。

1日目

用意した環境は、FedoraCore5にRPMでPHP5.1.6、apache2.2.2、MySQL5.0.22。

最初に悩んだのが

$ pear install symfony/symfony-beta

βの方がいいのか?うーん。stable(0.6.3)でいくことにした。

$ pear install symfony/symfony

httpd.confの設定でAllowOverride Allとしているのも速度的にどうなんだろう、とこの辺りは本番環境で変える必要がありそうです。
ローカルだけで動かしているマシンではないのでServerName askeetとなっている箇所は削除。

Subversionの設定の箇所は飛ばしました。

Congraturations!が表示されるまでは無事終了。

2日目

リアルに1日ずつやっていたら飽きること間違いなしなので勢いでやりつつブログ書いて自分にプレッシャーかける戦法で。

最初のsvn renameはSubversionを使っていないので単にmv。InnoDBの設定は無視。で、

$ symfony propel-build-model

のところで早速、

PHP Fatal error:  Class 'DomDocument' not found in ~

というエラー。

PHP: DOM XML Functions – Manual
これがPHP5にはついているそうですがFedora5のPHPは–disable-domになっていたので

# yum install php-dom

としてphp-xmlをインストール。これで解決。

最初はそのまますんなりいき、ブラウザで

http://askeet/question

にアクセス!

が、Oops!と怒られ500エラー。apacheのエラーログには何も出てこないので、デバッグの仕方がわからずとりあえずフォーラムで検索

1日目にちゃんと書いてあったのを読め、という話ですが

http://askeet/frontend_dev.php/question

にアクセスするとデバッグモードになり、Syntax errorが発生していることが判明。エラー箇所のコードを眺めると

$database = new Array();

とここでエラーになっていてこんな構文あったっけ、とひとしきり悩む。
同じエラーに悩まされている方がフォーラムにいらっしゃり、config/databases.ymlの記述がどうもおかしい、と判明。new Array()の部分は、コードが自動生成されたときに値がなくてArrayとechoされたのかな、と推測されます。

僕のコピペ時の凡ミスでしたが、YAMLはインデントに要注意です。

気を取り直して

$ symfony propel-build-schema

から再度コマンドを打っていくと

$ mysql -u youruser -p askeet < data/sql/schema.sql

今度はここでエラー。最初はうまくいったのになぜ。。

ERROR 1064 (42000) at line 32: You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL,
        `user_id` INTEGER default  NOT NULL,
        `created_at` DATETIME,
        PRIMARY' at line 3

“default”を消すとうまくいくわけですが、config/schema.xmlの記述がおかしいのでしょうか。フォーラムにも同じエラーが報告されていますがレスがついていないので詳細は不明。

手動でschema.sqlを編集して先へ進み、

$ symfony cc frontend config

を忘れずに実行して再びブラウザでアクセスすると今度はうまくいきました。

続く。

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

Page optimized by WP Minify WordPress Plugin