2013-08-20 97 views
2

我一直在一個網站上工作了大約一個月,我最近嘗試了一些東西,現在我真的堅持剛剛彈出的緩存權限問題向上。我讀過關於計算器的一切在這個問題上,例如:cakephp SplFileInfo :: openFile myapp_cake_core_cake_console未能打開流:權限被拒絕

SplFileInfo::openFile(/app/tmp/cache/persistent/cake_core_cake_console_):failed to open stream:Permission denied in /lib/.../FileEngine.php line 293

Cakephp Permission denied Fileengine.php

包括錯誤/非錯誤:http://cakephp.lighthouseapp.com/projects/42648/tickets/2172

但我仍然無法阻止出現這種錯誤在插件使用HTML->腳本助手加載JavaScript資源期間。

警告: SplFileInfo ::中openFile(在/ var/WWW/2tli /應用程序的/ tmp /緩存/永久/ myapp_cake_core_cake_console_): 未能打開流:權限在 在/ var/WWW/2tli/lib中否認/Cake/Cache/Engine/FileEngine.php上線314

調用堆棧: 0.0009 352948 1. {主}()/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。 Cake 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 
)); 

我已經把所有的應用程序/ tmp文件和文件夾作爲我的apache擁有者www-data並設置爲777(我也嘗試過666來匹配掩碼)。

我已經刪除並重建了app/tmp目錄。

有沒有人有任何想法?

編輯:我不知道該怎麼做,但我注意到註釋掉Html->腳本助手有時不會刪除錯誤(並且原始html仍顯示腳本包含) 。所以我盯着刪除緩存並將緩存持續時間設置爲1秒。只是偶爾它的行爲如預期,因爲html似乎被緩存。我發現始終如一地按照預期工作(無論是在註釋還是註釋行中)時,唯一的方法是刪除緩存並重新啓動瀏覽器(firefox)。然後,無論何時在重新啓動Firefox後再次輸入html->腳本,Cake都可以在沒有權限錯誤的情況下運行。我相信問題會回來,因爲我似乎無法找到根本原因。

+0

你在app/tmp/cache目錄中包含了模型,視圖和持久子文件夾嗎? –

+0

@ joshua.paling是的www數據和777.我真的被困在這一個... – user6972

+0

你的服務器上是否有剩餘空間?你可以通過普通的FTP手動在這些目錄中創建文件嗎? –

回答

0

目前我仍然不清楚我的系統上發生了什麼,但我已確認關閉瀏覽器並重新啓動它可以解決此問題。

我在本地系統上用Firefox 23.0測試,使用firebug & firephp。

另外我發現如果我通過一個助手在前面已經呈現的視圖中添加一個$ this-> Js->鏈接,那麼新的JS腳本將不會出現,直到瀏覽器停止並重新啓動。 (沒關係,如果cakephp緩存被清除或不)。

我不知道這是否是某種firefox/firebug或apache或cake問題。

編輯:我也發現將這個文件移動到app/webroot/js而不是通過插件提供它的工作100%的時間。也許這個資產如何得到蛋糕的服務存在一個錯誤?

2

我發現與Bake這樣做的問題是限制在持久緩存中的文件的權限。這意味着我的網站創建了它們(www-data),並沒有給我的控制檯應用程序使用該文件的完整讀/寫/執行權限。

我解決了這個問題,通過改變在持續的文件夾中的文件的權限

cd ./app/tmp/cache/persistent/ 
sudo chmod 777 * 

我不得不使用sudo,因爲我是不是該文件的所有者;該網站(萬維網數據)是。

希望這可以幫助別人。

相關問題