私はサイトで約 1 か月間作業しており、最近何かを焼き込もうとしましたが、ポップアップしたばかりのキャッシュ許可の問題で本当に立ち往生しています。たとえば、この問題に関するstackoverflowのすべてを読みました:
Cakephp 許可が拒否されました Fileengine.php
バグ/非バグを含む: http://cakephp.lighthouseapp.com/projects/42648/tickets/2172
しかし、プラグインが HTML->script ヘルパーを使用して JavaScript アセットをロードしているときに、このエラーが表示されるのを止めることはできません。
警告: SplFileInfo::openFile(/var/www/2tli/app/tmp/cache/persistent/myapp_cake_core_cake_console_): ストリームを開けませんでした: /var/www/2tli/lib/Cake/Cache/Engine/FileEngine で許可が拒否されました。 php 314行目
コール スタック: 0.0009 352948 1. {main}() /var/www/2tli/app/webroot/index.php:0
0.0045 446644 2. include('/var/www/2tli/lib/Cake/bootstrap.php') /var/www/2tli/app/webroot/index.php:92 0.0327 1174292 3. Configure::bootstrap() /var/www/2tli/lib/Cake/bootstrap.php:171 0.0427 1406772 4. include('/var/www/2tli/app/Config/core.php') /var/www/2tli/lib/Cake/Core/Configure.php:78 0.0494 1512200 5. Cache::config() /var/www/2tli/app/Config/core.php:336 0.0495 1512940 6. Cache::_buildEngine() /var/www/2tli/lib/Cake/Cache/Cache.php:136 0.0562 1635708 7. FileEngine->gc() /var/www/2tli/lib/Cake/Cache/Cache.php:169 0.0562 1635796 8. FileEngine->clear() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:102 0.0617 1637516 9. FileEngine->_setKey() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:236 0.0627 1657060 10. trigger_error() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:314
PHP 5.3.10 を実行しています。ケーキ 2.3.7. 私のbootstrap.phpには次のものがあります。
// Setup a 'default' cache configuration for use in the application.
Cache::config('default', array('engine' => 'File', 'mask' => 0666));
そしてcore.phpで:
/**
* Configure the cache used for general framework caching. Path information,
* object listings, and translation cache files are stored with this configuration.
*/
Cache::config('_cake_core_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration,
'mask'=>0666 ));
Cache::config('_cake_model_', array(
'engine' => $engine,
'prefix' => $prefix.'cake_model_',
'path' => CACHE . 'models' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration,
'mask' => 0666
));
私のプラグインには、次のようなbootstrap.phpもあります。
Cache::config('UserPlugin', array(
'engine' => 'File',
'duration'=> '+3 months',
'path' => CACHE,
'prefix' => 'UserPlugin_',
'mask'=>0666
));
すべての app/tmp ファイルとフォルダーを apache 所有者 www-data として配置し、777 に設定しました (マスクと一致させるために 666 も試しました)。
app/tmp ディレクトリも削除して再構築しました。
誰にもアイデアはありますか?
編集:これをどうすればいいのかよくわかりませんが、Html->scriptヘルパーをコメントアウトしてもエラーが削除されないことがあることに気付きました(生のhtmlにはまだスクリプトのインクルードが表示されていました)。そこで、キャッシュを削除し、キャッシュの持続時間を 1 秒に設定することにしました。HTMLがキャッシュされているように見えるため、期待どおりに動作することがたまにありました。(行をコメントインまたはコメントアウトするときに)一貫して期待どおりに動作させることがわかった唯一の方法は、キャッシュを削除してブラウザー(Firefox)を再起動することでした。その後、Firefox を再起動した後に再度 html->script を挿入すると、cake は許可エラーなしで動作します。根本的な原因が見つからないように見えるので、問題が再発すると確信しています。