システム開発、Webアプリ開発の株式会社テラディアの技術ブログです。
PHP
symfonyのdoctrine:migrate処理のプレ・ポスト処理では、dqlは使用しない
5月 30th
デプロイ先のサイト数が少しずつ増えて行くようなシステムの場合、symfonyのdoctrine:migrate処理のプレ・ポスト処理では、dqlは使用しない方が良いです。
例えば、SiteConfHonbuというモデルに、image_enabledという項目を追加し、その値をtrueに設定する場合、通常は次のようにpostUpはdqlを使用して記述します。(デフォルト値を1にすればpostUpは不要ですが、あくまで例です。)
public function up() { $this->addColumn('site_conf_honbu','image_enabled', 'boolean', array('notnull' => true, 'default' => 0) ); } public function postUp() { Doctrine::getTable('SiteConfHonbu')->createQuery('c') ->update() ->set('c.image_enabled', true) execute(); }
もちろん、これは、この時点では、何の問題もなく動作します。
ところが、この後、バージョンアップによってimage_enabledの名前がtop_image_enabledに変更になった場合はどうなるでしょうか。
新しいサイトにデプロイする場合を考えてみてください。
この時、モデルにはimage_enabledという項目は既に無くなっています。その状態で、上記のdoctrine:migrate処理を行うと、エラーが発生してしまいますね。
postUpは、以下のようにsqlで記述してやれば、OKです。
public function postUp() { //将来的にSiteConfHonbuモデルは変更になる可能性がある為、dqlは使用しない。 $conn=Doctrine_Manager::connection(); $sql='UPDATE site_conf_honbu set image_enabled=1'; $conn->exec($sql,array()); }
*配置先が1サイトなら、特にこのような考慮は不要です。
フォームでのファイルの最大アップロード数
5月 16th
PHPのバージョン5.2.12から、一つのフォームで送信できるファイルの数がデフォルトで20個に制限されるようになりました。(実際にアップロードするファイル数ではなく、<input type="file" />
の数の制限です。)
この制限数は、php.iniに設定できます。
例)
max_file_uploads = 100
開発環境では、現象が出なかったのですが、さくらのレンタルサーバーで、本現象が出て、なかなか原因がわかりませんでした。
知っていれば何でもない事なんですが、、、