PHP, PostgreSQL」カテゴリーアーカイブ

Pleskでつくるユーザの謎

Pleskでつくるドメイン毎のユーザでは、CakePHPのshellをうまく実行できない。こういうエラーが出てしまう。

PHP Fatal error:  Class 'AppModel' not found in /var/www/vhosts/...

普通に、adduserなどで作ったユーザはうまく行くのだが。おそらく、PATHの関係なのだと思うが、未だ原因がわからない。

CakePHPで静的ページへのユーザ認証を除去

CakePHPで認証付きの静的ページを作る | Web活メモ帳を参考に、CakePHPでの静的ページへのユーザ認証を解除したのメモを。

なぜ、こんな処理が必要になったかというと、AppController内で、Authコンポーネントを有効にしたため。Controller全体にユーザ認証が効くようになったが、ユーザ認証無しでの公開を前提としている静的ページまでも、ユーザ認証が求められるようになったため、ユーザ認証を無効化する必要性が発生した。

AppControllerのbeforeFilterで、以下のように記述する。

function beforeFilter()
{
        // pages controllerかどうかをチェック
        // Pagesだったら、ユーザ認証は行わない
        if ($this->name == 'Pages')
        {
            $this->Auth->allow('*');
        }
}

CakePHPのタイムゾーンをローカル設定にする方法

PHP5.3対応とかで、初期設定のタイムゾーンが勝手にUTCになっている。これを解決するには、
app/config/core.phpの以下の部分をコメントアウトすれば、php.iniの設定が読み込まれる。特に、php.iniでタイムゾーンを設定していなければ、ローカルのタイムゾーン設定が反映される。

/**
 * If you are on PHP 5.3 uncomment this line and correct your server timezone
 * to fix the date & time related errors.
 */
//	date_default_timezone_set('UTC');

mod_chxjは便利だ

CakePHPでケータイサイトを作っているのだが、一番手こずっているのがセッション管理。ケータイのブラウザのほとんどは、Cookieを持てないので独自にセッションを管理する必要があるのだが、タグのリンクにセッションIDを埋め込んだりと面倒くさい。

mod_chxjを使うと、cookieをシミュレートしてくれるようになるので、これはかなり便利。PHPのデフォルトのセッションID埋め込み機能よりも、セッション切れが発生しづらい。

CakePHP1.2でエラー表示を消す方法

/app/config/core.phpを以下のように修正

Configure::write('debug', 0);

CakePHPでは、php.iniでエラーレベルを変えても、core.phpの設定が優先されてしまう。この設定を変えることで、ErrorやNoticeの表示を制限できる。デプロイの時に便利。

参考
【CakePHP】1.2でNoticeエラーを表示させない : 地方で活動するweb制作者の日々を綴るblog