3

私はサイトで約 1 か月間作業しており、最近何かを焼き込もうとしましたが、ポップアップしたばかりのキャッシュ許可の問題で本当に立ち往生しています。たとえば、この問題に関するstackoverflowのすべてを読みました:

SplFileInfo::openFile(/app/tmp/cache/persistent/cake_core_cake_console_):ストリームを開くことができませんでした:/lib/.../FileEngine.php 行 293 で許可が拒否されました

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 は許可エラーなしで動作します。根本的な原因が見つからないように見えるので、問題が再発すると確信しています。

4

2 に答える 2

0

私のシステムで何が起こっているのかはまだ不明ですが、ブラウザを閉じて再起動するとこの問題が解決することを確認しました.

firebugとfirephpを使用して、Firefox 23.0のローカルシステムでテストしています。

さらに、以前にレンダリングされたビューでヘルパーを介して $this->Js->link を追加すると、ブラウザーを停止して再起動するまで新しい JS スクリプトが表示されないことがわかりました。(cakephp キャッシュがクリアされているかどうかは関係ありません。)

これがある種の firefox/firebug なのか、apache なのかケーキの問題なのかはわかりません。

編集: また、プラグインを介して提供する代わりに、このファイルを app/webroot/js に移動すると、100% の確率で機能することもわかりました。アセットがケーキによって提供される方法にバグがあるのでしょうか?

于 2013-08-21T21:57:27.563 に答える