[英]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.