カテゴリー別アーカイブ: Web開発

[Apache] .git, .gitignore等をWebからアクセスできないようにする


gitで管理しているwebサイトでうっかり.gitや.gitignoreなどの Git 関連ファイルが漏れてしまわないようにするには、httpd.conf で以下のように設定します。

# .git から始まるファイルへのアクセスを禁止
<Files ~ "^\.git">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
# .git/ フォルダ以下のファイル・ディレクトリへのアクセスを禁止
<Directorymatch "^/.*/\.git/">
Order deny,allow
Deny from all
</Directorymatch>

.git は外してアップしているよ、という方も、保険として入れておくと万一の時に .git や .gitignore などが
公開ディレクトリに混ざってしまってもアクセスできないようになるので安全ですね。

[PHP][Yii] モデルでタイムスタンプを自動更新する


Yii 1.1 のモデル(CModel)で自動更新する方法のメモ。

参考: Yii 1.1: How to automate timestamps in ActiveRecord models

CActiveRecord::rules()で設定する

/**
 * @return array validation rules for model attributes.
 */
public function rules()
{
    return array(
        // 略
        array('modified','default',
              'value'=>new CDbExpression('NOW()'),  // PHPのタイムスタンプを使うならdate('Y-m-d H:i:s')など
              'setOnEmpty'=>false,'on'=>'update'),
        array('created,modified','default',
              'value'=>new CDbExpression('NOW()'),
              'setOnEmpty'=>false,'on'=>'insert')
    );
}

CActiveRecord::beforeSave()で更新する

public function beforeSave() {
    if ($this-&gt;isNewRecord)
        $this->created = new CDbExpression('NOW()');

<pre><code>$this-&gt;modified = new CDbExpression('NOW()');

return parent::beforeSave();
</code></pre>

}

CTimestampBehaviorを使う

    // CActiveRecord::behaviors()
    public function behaviors(){
        return array(
            'CTimestampBehavior' => array(
                'class' => 'zii.behaviors.CTimestampBehavior',
                'createAttribute' => 'created', // 作成日時のカラム名(デフォルト: create_time)
                'updateAttribute' => 'modified', // 更新日時のカラム名(デフォルト: update_time)
                'setUpdateOnCreate' => true,    // 作成時にupdateカラムも更新するか(デフォルト: false)
            )
        );
    }

どれを使うかはお好みですね。