symfonyを使ったサイトリリース時のチェック項目

symfonyを使ったサイトをリリースするときに、チェックした方がよい項目をまとめました。

  1. 環境チェック
  2. PROD環境になっているか
  3. web/以下に不要なphpがないか
  4. ログを有効化
  5. ログの監視
  6. ログのローテーション
  7. web/errors
  8. web/.htaccess使わない

symfony version 1.0用になりますが、1.1系や1.2系でもほぼ同じだと思います。

2009-6-12 23:28 追記: 記事を書いた後にもっと良いサイト見つけました><。 http://symfony-check.org/en/

この投稿の続きを読む »symfonyを使ったサイトリリース時のチェック項目

WebDebugを一時的に無効にする方法

訳あってsymfony 1.2用に作られたsfCryptoCaptchaPluginをsymfony1.0用に修正してます。現在ほぼ作業が終わってこちらのリポジトリに最新版があります。

コーディング時にはまったのが、うまくCAPTCHAイメージがが出力されずエラーがでる事でした。 原因を調べるため、バイナリダンプを行った所なんと、WebDebugツールバーが出力されており、バイナリを壊していました。

WebDebugツールバー自体は通常の開発で活躍していますので、CAPTCHAの出力の時だけWebDubgツールバーを無効にしたいと思いましたが、すぐにどうやるか思いつかなかったのですが以下のようにしてうまくいきました。

この投稿の続きを読む »WebDebugを一時的に無効にする方法

escaping_methodのESC_ENTITIESには注意が必要

初投稿のhnwです。よろしくお願いします。

symfonyでescaping_methodをESC_ENTITIESにすると問題がありますよ、という指摘です。

symfonyには標準でHTMLの出力エスケープ機構が組み込まれています。これは、テンプレートに渡された値に関して、スカラ、配列、オブジェクトのメソッド呼び出し結果など、全ての値が勝手にescapeされるようになっています。

このescapingに関する設定として、settings.ymlでescaping_strategy(デフォルト値はbc)をbothに変更するのはsymfonyの定石です。しかし、escaping_methodはsymfony 1.0のデフォルト値のESC_ENTITIESのまま、という人は多いのではないでしょうか。

escaping_methodをESC_ENTITIESに設定した場合、escapeにhtmlentities関数が使われます。実はこの関数に問題があります。

この投稿の続きを読む »escaping_methodのESC_ENTITIESには注意が必要

symfonyのpear upgrade方法にご注意を

symfony 1.1と1.0.17がリリースされましたが、pear upgradeの際には「どちらにupgradeされるか」にご注意ください。

sudo pear upgrade symfony/symfony

この場合、1.1にupgradeされますので1.0系で開発されたものは(そのままでは)動かなくなります。

1.0.17にupgradeしたい場合は

sudo pear upgrade symfony/symfony-1.0.17

バージョン番号を付加してください。

レコード退避プラグイン作ってみました。

sfPropelRemainというプラグインを作ってみました。

update/delete時に自動的に過去のレコードを退避してくれるプラグインです。こないだのサンプルコードを使って作ったので、PropelBehaviorの作成例として見てくださいね!

この投稿の続きを読む »レコード退避プラグイン作ってみました。

バッチプログラムを書くときのおすすめ

みなさんバッチファイルを書くことはよくありますよね。cronから定期的に呼ばれたり、コマンドラインから手で実行したりするあれです。そういったバッチプログラムをsymfonyで書くときに役立つちょっとしたおすすめを2つ。 この投稿の続きを読む »バッチプログラムを書くときのおすすめ

html属性指定の罠

htmlタグ出力ヘルパー関数の属性指定引数で、トラブルの元になりそうな挙動を見つけました。

この投稿の続きを読む »html属性指定の罠

yaml形式のデータをfor文で大量生成

symfonyではpropel-load-datayaml形式のデータをDBに読み込ませることができますが、次のようにテストデータをいくつも書き続けるのは面倒です。

この投稿の続きを読む »yaml形式のデータをfor文で大量生成

セレクトボックスの先頭を空にしたい

symfonyのテンプレートではFormHelperを使うことでinputタグ・textareaタグなどをテンプレートで使わなくなりました。 その中でも、セレクトボックスを作成する場合はselect_tagとoptions_for_selectの2つの関数を扱います。 2つの関数の使い方を実装例を交えながら説明したいと思います。

select_tagとoptions_for_selectの2つのヘルパー関数を使ってコードを書いてみましょう。

< ?php echo select_tag("drink",options_for_select(array(1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

以下のように表示されます。

 

select_tagを使えば簡単にセレクトボックス作ることができますが、問題はセレクトボックスの先頭を空にしたいという要件はないでしょうか?

以下のようなケースです。

先頭を空にしたいのでoptions_for_selectの引数のarrayに空の配列を加えてみました。

< ?php echo select_tag("drink",options_for_select(array('' => '', 1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

しかし、先頭にわざわざ空の配列を作るのはコードの見栄えが悪いです。 これをoptions_for_selectの特殊なオプションで回避したいと思います。

この投稿の続きを読む »セレクトボックスの先頭を空にしたい

『Your name here問題』

symfonyで書かれたソースコードを見ていると、

@author
の部分が
Your name here
と書かれた以下のようなコードを良く目にします。

このように、

@author
Your name here
ばかりになる現象を、『Your name here問題』と勝手に呼んでいます。

これは、

symfony
コマンドによる生成されたファイルに自動的に
@author
Your name here
というコメントが生成され、プログラマが自分の名前に書き換えるのを忘れるために起こります。別に律義に書き換えなくてもプログラムの動作には関係ありませんから気にならない人ほっといても良いです。気になる人は続きをどうぞ。

この投稿の続きを読む »『Your name here問題』