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バージョンがある場合に発生します。コメント。返信いただきありがとうございます。これもお役に立てば幸いです。
まあ、私の場合、アプリをチェックしたところ、/tmp
フォルダ。次に、構造(/tmp/cache/models
、/tmp/cache/persistent
)そしてすべてがうまくいきました。これは多分gitが空のフォルダーを無視するために起こったので、それらは作成されませんでした。
同様の問題がありました。それは、app/tmpディレクトリに-R wwwを指定して、全員に書き込み権限を与えずにCakeを「適切に」実行させたためです。開発中にコンソールとWebを使用する唯一の方法は、全員に書き込み権限を与えるか、おそらくwwwグループに自分を追加することです。
簡単なソリューション:
chmod -R 777 app/tmp
または
chown -Rユーザー名app/tmp
コンソールを使用しながら
chown -R www app/tmp
ウェブを使うとき
776
に正しいCHMOD
(app/tmp
は私にとってはうまくいく)を与えるだけです
同じエラー/警告を持つWindowsユーザーの場合:管理者特権モードでコマンドプロンプトを実行してください;)