予告:4/
機能的な問題以外ににも,
- 日本語が使えない
- エスケープのセキュリティ対策が十分でない
- ZendFrameworkらしくないViewでのエスケープ
しかし,
ZendFrameworkを使ったほうが,
データベースの設定修正
まずはデータベースの設定を修正します。データベースには2つの問題があります。
- 文字エンコーディング
- ユーザアカウント
文字エンコーディングの問題
どんなアプリケーションでも利用する文字エンコーディングを正しく取り扱わないと,
今回はPostgreSQLをデータベースサーバとして利用しています。PostgreSQLはMySQLやMS SQL Server,
PostgreSQLサーバのインストールや設定によっては,
デフォルト文字エンコーディングがUTF-8の場合
[framework@localhost www]$ psql -U postgres -l List of databases Name | Owner | Encoding -----------+---------------+---------- guestbook | postgres | UTF8 mediawiki | mediawikiuser | UTF8 postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF8 (5 rows)
デフォルト文字エンコーディングがSQL_
[yohgaki@dev $ psql -U postgres -l Password for user postgres: List of databases Name | Owner | Encoding -----------+---------------+----------- guestbook | postgres | SQL_ASCII mediawiki | mediawikiuser | SQL_ASCII postgres | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII (5 rows)
PostgreSQLのSQL_
もし,
- ※1
PostgreSQLのデフォルト文字エンコーディング
(templateデータベースの文字エンコーディング) はinitdbコマンドでデータベースを初期化する際に決まります。 「initdb -E utf8」 と, ほかのコマンド同様, -Eオプションで文字エンコーディングを指定できます。
ユーザアカウントの問題
データベースユーザが特権ユーザである
通常,
データベースの問題を修正
PostgreSQLの場合,
データベースの削除
$ dropdb guestbook
ゲストブックデータベースにアクセスする新しいデータベースユーザを作ります。
$ /opt/PostgreSQL/8.3/bin/createuser -U postgres -W zfguestbook Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) n Shall the new role be allowed to create more new roles? (y/n) n Password:zfguestbook(※実際には表示されません)
通常ユーザ,
文字エンコーディングとオーナー名を指定してデータベースを作成
$ createdb -U postgres -O zfguestbook -E utf8 guestbook
作成したデータベースを確認
[yohgaki@dev PHP-ZendFramework]$ psql -l -U postgres Password for user postgres: List of databases Name | Owner | Encoding -----------+---------------+----------- guestbook | zfguestbook | UTF8 mediawiki | mediawikiuser | SQL_ASCII postgres | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII (5 rows)
psqlコマンドでデータベースを一覧すると新しいオーナーとエンコーディングでデータベースが作成されていることが確認できます。
テーブルの作成
$ psql -U zfguestbook -f /www/guestbook/guestbook.sql guestbook
作成したテーブルの確認
$ psql -U zfguestbook guestbook Password for user zfguestbook: Welcome to psql 8.3.5, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit guestbook=> \d List of relations Schema | Name | Type | Owner --------+------------------+----------+------------- public | guestbook | table | zfguestbook public | guestbook_id_seq | sequence | zfguestbook (2 rows)