私はエラーを生成するcakephpにいくつかのコードを持っています。
これがPHPコントローラー:
$this->loadModel( 'Vote' ); //Newly added by amit start
$vote=$this->Vote->getVote($id,$uid);
$this->set('vote',$vote);
$voteCount = count($vote);
$this->set('voteCount',$voteCount);
$voteShow = $this->Vote->find('all', array(
'fields' => array('SUM(Vote.score) AS score','count(id) as countId'),
'conditions'=>array('Vote.type_id'=>$id),
));
$this->set('voteShow',$voteShow);
モデル:
public function getVote($id,$uid) {
if (empty($conditions))
$conditions = array('Vote.type' => 'blog',
'Vote.type_id' => $id,
'Vote.user_id' => $uid);
$users = $this->find('all', array('conditions' => $conditions,
'order' => 'Vote.id desc'
));
return $users;
}
そのコードはこのエラーを生成します:
Error : An internal error has occurred
このエラーはどういう意味ですか?
Core.phpでデバッグモード:Configure::write('debug', 2);
を有効にすると、問題が解決しました。
私の場合、デバッグモードはcore.phpのライブサーバーでConfigure::write('debug', 0);
でした。
Configure::write('debug', 1);
に設定しましたが、今回はエラーは表示されませんでした。
そこで、ライブサイトでデバッグエラーを表示したくないので、デバッグモードをConfigure::write('debug', 0);
に再度変更しました。
この時間は、エラーメッセージが現れません。
つまり、core.phpでデバッグモードを1回変更するだけです私の場合はこのエラーを取り除きます。
デバッグモードを1に変更してから、変更した関数をローカルで実行すると、CakePHPはそれらの関数に含まれるすべてのモデルのキャッシュを更新します。 Configure::write('debug', 0)
に戻すことができます。
本番環境ではConfigure::write('debug',2)
を設定しないでください。エラーが発生したときに、機密データ(クエリなど)をユーザーに書き込む可能性があります。デバッグ2が機能する理由は、CACHEのアイテムが取得されないためです。もう考慮して、それは動作します。キャッシュを削除し、本番環境ではDEBUGを0のままにしておくだけです。非常に重要です。
キャッシュはここにあります:tmp/cache/
繰り返しになりますが、そこにある3つのフォルダーは削除せず、コンテンツを削除するだけです。