2

Cedar スタックで実行されている Heroku CakePHP アプリがいくつかあります。キャッシュ エンジンがファイルに書き込もうとすると、すべてのリクエストでアプリがエラーになります。

[Sat Feb 09 05:56:51 2013] [エラー] [クライアント xxxx] PHP の致命的なエラー: メッセージ「キャッシュ エンジン _cake_core_ が正しく構成されていません」を含む例外「CacheException」がキャッチされません。in /app/www/lib/Cake/Cache/Cache.php:165
スタック トレース:
#0 /app/www/lib/Cake/Cache/Cache.php(135): Cache::_buildEngine('_cake_core_')
# 1 /app/www/app/Config/core.php(277): Cache::config('_cake_core_', Array)
#2 /app/www/lib/Cake/Core/Configure.php(76): include( '/app/www/app/Co...')
#3 /app/www/lib/Cake/bootstrap.php(163): Configure::bootstrap(true)
#4 /app/www/app/webroot/ index.php(82): include('/app/www/lib/Ca...')
#5 {main}
が 165 行目の /app/www/lib/Cake/Cache/Cache.php でスローされる

2013-02-09T05:56:51+00:00 アプリ [web.1]: [2013 年 2 月 9 日土曜日 05:56:51] [エラー] [クライアント xxxx] PHP 警告: /app/www/app/tmp/ cache/persistent/ は /app/www/lib/Cake/Cache/Engine/FileEngine.php の 336 行目に書き込み可能ではありません

2013-02-09T05:56:51+00:00 アプリ [web.1]: [Sat Feb 09 05:56:51 2013] [エラー] [クライアント xxxx] PHP 警告: _cake_core_ キャッシュは「cake_dev_en- を書き込めませんでした」 us' を /app/www/lib/Cake/Cache/Cache.php の 309 行目のファイル キャッシュに

cedar スタックの dyno には、書き込み可能な一時的なファイルシステムがあると思いました。書き込み不可エラーが発生するのはなぜですか? また、エラーを修正するにはどうすればよいですか?

4

2 に答える 2

3

Memcahier や Redis などの実際のキャッシュ システムを構成することをお勧めします。通常は dyno に書き込むことができますが、スペースが限られているため、再起動すると失われ、複数の dyno を使用している場合は問題が発生します。

この特定のインスタンスは、apache conf の制限、またはビルドパックの dir 設定によって説明できます。すべてのディレクトリが書き込み可能であるとは限りません。「heroku run bash」を実行してアプリにシェルを取得した場合、ディレクトリは存在しますか?また、その権限は何ですか?

于 2013-02-10T14:22:31.043 に答える
1

この特定の問題は、Heroku とは何の関係もありません。

CakePHP のデフォルトのgitignoreは tmp ディレクトリを無視します。tmp ディレクトリ構造は新しいアプリにコミットされていなかったため、Heroku にデプロイされたときには存在しませんでした。

そのため、新しい CakePHP アプリを開始するときは、実際に tmp ディレクトリをリポジトリにコミットするように注意してください。

于 2013-02-14T15:54:16.613 に答える