簡體   English   中英

樹枝緩存問題-filemtime():lib \\ Twig \\ Cache \\ Filesystem.php 91中的…php的統計信息失敗

[英]twig caching issue - filemtime(): stat failed for …php in lib\Twig\Cache\Filesystem.php 91

似乎樹枝的getTimestamp()函數與PHP 5.5.12(windows / linux)不完全兼容,並且在文件不可用時引發異常。

public function getTimestamp($key)
{
    return (int) @filemtime($key);
}

我們正在使用Twig 1.22.2,而沒有其余的symfony。 我正在檢查請求的密鑰,但是該文件不存在。 樹枝不應該在執行filemtime()調用之前檢查文件是否存在嗎? 否則,緩存永遠不會被填充。 我們在配置樹枝以下:

$this->loader = new \Twig_Loader_Filesystem($options['TEMPLATE_DIR']);
    $this->twig = new \Twig_Environment($this->loader, array(
        "auto_reload" =>  true
        , "cache"     =>  'cache/twig'
    ));

這樣,就永遠不會創建緩存文件。 我們必須禁用緩存才能使其正常工作。

"cache" => false

對於生產環境,這不起作用

另一個解決方案如下:

public function getTimestamp($key)
{
    **return false;**
    return (int) @filemtime($key);
}

然后恢復到原始來源 然后,將緩存文件寫入磁盤,一切都像超級按鈕一樣工作。

我猜想php內部發生了一些變化,樹枝團隊需要適應這種變化。 默認情況下,twig始終希望文件存在,而對於第一次點擊的每個應用程序而言,情況並非如此!

好的,進行了更多測試,似乎我們的自定義錯誤處理程序對警告做出了錯誤反應並引發異常。 只是在通知他正確記錄下來。 看來此案已解決。 樹枝上沒有蟲子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM