2012-08-04 51 views
1

任何人都有任何想法,爲什麼我得到這個異常後獲得最新版本的鋰?TemplateException:無法編寫編譯模板 - 後git克隆

(!) Fatal error: 
    Uncaught exception 'lithium\template\TemplateException' with message 
    'Could not write compiled template 
    C:\Users\Master\Documents\Visual Studio 2010\Projects\PSER\PSER/resources/tmp/cache/templates/template_views_pages_index.html_0_1344056913_326.php 
    to cache.' in 
    C:\Users\Master\Documents\Visual Studio 2010\Projects\libraries\lithium\template\view\Compiler.php 
    on line 81 

(!) lithium\template\TemplateException: 
    Could not write compiled template 
    C:\Users\Master\Documents\Visual Studio 2010\Projects\PSER\PSER/resources/tmp/cache/templates/template_views_pages_index.html_0_1344056913_326.php 
    to cache. in 
    C:\Users\Master\Documents\Visual Studio 2010\Projects\libraries\lithium\template\view\Compiler.php 
    on line 81 

Call Stack 

Time Memory Function Location 

1 0.1070 331944 {main}() ..\index.php:0 
2 0.2013 4387040 lithium\action\Dispatcher::run(???, ???) ..\index.php:41 
3 0.2013 4388248 lithium\core\StaticObject::filter(???, ???, ???, ???) ..\Dispatcher.php:155 
4 0.2013 4389784 lithium\util\collection\Filters::run(???, ???, ???) ..\StaticObject.php:126 
5 0.2014 4391752 {closure}(???, ???, ???) ..\Filters.php:183 
6 0.2015 4391752 lithium\util\collection\Filters->next(???, ???, ???) ..\cache.php:46 
7 0.2015 4391784 {closure}(???, ???, ???) ..\Filters.php:202 
8 0.2075 4427760 lithium\util\collection\Filters->next(???, ???, ???) ..\action.php:51 
9 0.2075 4427792 lithium\action{closure}(???, ???, ???) ..\Filters.php:202 
10 0.2198 4534776 lithium\core\StaticObject::invokeMethod(???, ???) ..\Dispatcher.php:154 
11 0.2198 4534808 lithium\action\Dispatcher::_call(???, ???, ???) ..\StaticObject.php:75 
12 0.2198 4535896 lithium\core\StaticObject::_filter(???, ???, ???, ???) ..\Dispatcher.php:265 
13 0.2198 4536152 lithium\action{closure}(???, ???, ???) ..\StaticObject.php:119 
14 0.2198 4536152 lithium\action\Controller->_invoke(???, ???, ???) ..\Dispatcher.php:262 
15 0.2199 4537752 lithium\core\Object->_filter(???, ???, ???, ???) ..\Controller.php:198 
16 0.2199 4538032 lithium\action{closure}(???, ???, ???) ..\Object.php:238 
17 0.2199 4538280 lithium\core\Object->invokeMethod(???, ???) ..\Controller.php:184 
18 0.2200 4538312 app\controllers\PagesController->view() ..\Object.php:165 
19 0.2200 4538824 lithium\action\Controller->render(???) ..\PagesController.php:32 
20 0.2204 4541320 lithium\net\http\Media::render(???, ???, ???) ..\Controller.php:266 
21 0.2205 4550368 lithium\core\StaticObject::_filter(???, ???, ???, ???) ..\Media.php:593 
22 0.2206 4550616 lithium\net\http{closure}(???, ???, ???) ..\StaticObject.php:119 
23 0.2208 4553656 lithium\core\StaticObject::invokeMethod(???, ???) ..\Media.php:590 
24 0.2208 4553984 lithium\net\http\Media::_handle(???, ???, ???) ..\StaticObject.php:75 
25 0.2208 4555936 lithium\core\StaticObject::_filter(???, ???, ???, ???) ..\Media.php:750 
26 0.2209 4556184 lithium\net\http{closure}(???, ???, ???) ..\StaticObject.php:119 
27 0.2257 4579800 lithium\template\View->render(???, ???, ???) ..\Media.php:746 
28 0.2259 4583520 lithium\template\View->_step(???, ???, ???, ???) ..\View.php:328 
29 0.2259 4587040 lithium\core\Object->_filter(???, ???, ???, ???) ..\View.php:389 
30 0.2260 4587304 lithium\template{closure}(???, ???, ???) ..\Object.php:238 
31 0.2260 4587336 lithium\template\view\adapter\File->template(???, ???) ..\View.php:386 
32 0.2272 4588624 lithium\template\view\Compiler::template(???, ???) ..\File.php:133 

我很確定它不是在路徑中的斜槓(向前或向後)的問題。我創建了一個快速的小測試腳本,證明前向斜槓和後斜槓可以共同存在於Windows的路徑中。所得到的路徑是:

C:/Users/Master/Documents/Visual Studio 2010/Projects/PHP Prototyping/PHP Prototyping\ABC\testFile.txt 

代碼樣品低於:

<?php 
    $myFile = $_SERVER['DOCUMENT_ROOT'] . '\\ABC\\testFile.txt'; 
    $fh = fopen($myFile, 'w') or die('can\'t open file'); 
    $stringData = 'Bobby Bopper\n'; 
    fwrite($fh, $stringData); 
    $stringData = 'Tracy Tanner\n'; 
    fwrite($fh, $stringData); 
    fclose($fh); 
?> 
+0

我猜Windows正在嗆着那些正斜槓......那些東西在你的控制之下?也許新版本在Windows上進行了更改,使其失效? – JMM 2012-08-04 04:18:19

+0

斜槓*不應該*重要。我猜想目錄上的權限問題。檢查'resources/tmp'目錄的權限。 – sesser 2012-08-04 04:43:12

+0

@randy權限已被設置爲完全控制'everyone'。錯誤仍然發生。 – 2012-08-04 22:19:25

回答

0

的問題是,在高速緩存中的模板文件夾不存在。

該目錄不存在,因爲我沒有將它添加到源代碼管理,因爲tmp下的東西不應該從dev到prd。寫入模板緩存的問題始終存在,但最近對框架的更改會導致PHP拋出錯誤而不是黑色錯誤。

我已經在template/view/Compiler.php中添加了一些代碼來處理丟失目錄的創建。代碼塊的第一行是68,並沒有改變。同樣,結束行不會更改,因此您可以比較之前添加的內容。

$compiled = static::compile(file_get_contents($file)); 

    $pathIsWritable = is_writable($cachePath);  
    if(!$pathIsWritable){ 
     $exMessage = ' File not writable. '; 
     if(!file_exists($cachePath)) { 
      $exMessage .= 'Path to file invalid. '; 
      $dirCreated = mkdir($cachePath, 0777, true); 

      if($dirCreated) { 
       $pathIsWritable = true; 
      } 
      else { 
       $exMessage .= 'Attempt to create the directory path failed.'; 
      } 
     }   
    } 

    if ($pathIsWritable && file_put_contents($template, $compiled) !== false) { 
     foreach (glob("{$options['path']}/template_{$oname}_*.php") as $expired) { 
+1

而不是重寫鋰核心代碼,你可以在你的引導程序https://gist.github.com/1009460 – 2012-08-06 07:30:04

+0

@MehdiLahmamB中使用這個片段。我不確定我應該在哪裏添加此代碼?我知道你說過把它添加到引導文件中,你的意思是在配置文件夾的引導文件中?或者你的意思是把它作爲一個文件添加到引導文件夾中,並在引導文件中引用它? – 2012-08-07 00:58:26

+0

在config/bootstrap/libraries.php中,在Libraries :: add('lithium')之後,並在添加您的應用程序之前(請參閱要點中的相應行) – 2012-08-07 01:51:15

3

resources目錄不可寫這樣鋰不能寫編譯模板resources/tmp/cache/templates

編輯:仔細檢查以確保resources目錄存在,因爲它不應該在git倉庫中進行版本控制。

您可以使用此片段在飛行中創建它,用正確的權限:https://gist.github.com/1009460config/bootstrap/libraries.php

+0

允許完全控制'每個人'。問題仍然存在。 – 2012-08-04 22:21:22

+0

@mehlah你能否請更新你的答案,包括https://gist.github.com/1009460這樣我可以upvote你的答案,其他人可以找到解決方案:) – Oerd 2012-08-08 16:20:42

+0

我改變'資源'權限777和問題解決了:'chmod -R 777 resources'' – 2016-05-29 10:44:53