web-dev-qa-db-ja.com

CakePHP 2.0-Cakeはファイルキャッシュに書き込むことができませんでした

CakePHP 2.0 RC-1を使用しています。 SVNからプロジェクトをチェックアウトした後、アプリケーションはキャッシュファイルをtmp/cacheディレクトリに書き込めないという不平を言い始めています。これはローカルなので、ディレクトリが書き込み可能であることを知っており、ディレクトリがファイルでさえ満たされていることをはっきりと見ることができるので、エラーは少し奇妙です。

ここに私が遭遇したいくつかのエラーがあります:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127]

エラーなし?!えっ?

ここで、FileEngineファイルを見ると、127行目で次のようになっています。

if (!$handle = fopen($this->_File->getPathName(), 'c')) {
            return false;
}

「c」を「w」に置き換えると、エラーは発生せず、すべてが正常に機能します。ただし、この問題を回避するためにコアCakeライブラリを変更する必要はありません。コアライブラリを編集せずに、これを他のコンピューターで繰り返しますが、これは意図したとおりに機能します。どちらもWindows OSを使用しており、tmp/cache-folderに対する読み取り/書き込み権限はまったく同じです。

編集:ここに私がローカルで持っているエラー出力が発生するサイトがあります

グーグルが見つけたサイトの例。私のサイトではない: http://www.12h30.net/credit/

助言がありますか?

更新:理由は次のとおりです:これは、「api55」で概説されているように、5.2.6より前の低すぎるPHPバージョンがある場合に発生します。コメント。返信いただきありがとうございます。これもお役に立てば幸いです。

17
Coreus

まあ、私の場合、アプリをチェックしたところ、/tmpフォルダ。次に、構造(/tmp/cache/models/tmp/cache/persistent)そしてすべてがうまくいきました。これは多分gitが空のフォルダーを無視するために起こったので、それらは作成されませんでした。

24
Shad

同様の問題がありました。それは、app/tmpディレクトリに-R wwwを指定して、全員に書き込み権限を与えずにCakeを「適切に」実行させたためです。開発中にコンソールとWebを使用する唯一の方法は、全員に書き込み権限を与えるか、おそらくwwwグループに自分を追加することです。

簡単なソリューション:

chmod -R 777 app/tmp

または

chown -Rユーザー名app/tmp

コンソールを使用しながら

chown -R www app/tmp

ウェブを使うとき

17
Ian Will

776に正しいCHMODapp/tmpは私にとってはうまくいく)を与えるだけです

3
user982872

同じエラー/警告を持つWindowsユーザーの場合:管理者特権モードでコマンドプロンプトを実行してください;)

0
user1690294