我檢查了symfony的1.4和看到這個代碼:
// Hack from Agavi (http://trac.agavi.org/changeset/3979)
// With php < 5.2.6 on win32, renaming to an already existing file doesn't work, but copy does,
// so we simply assume that when rename() fails that we are on win32 and try to use copy()
if ([email protected]($tmpFile, $cache))
{
if (copy($tmpFile, $cache))
{
unlink($tmpFile);
}
}
這段代碼應該在sfConfigCache.php上線354,你可以檢查你有這行?如果沒有,請考慮更新或修補,如果是,則可以在取消鏈接之前記錄$ tmpFile,以查看是否嘗試解除鏈接這些文件。 要添加更多的信息日誌,你應該試試這個代碼,而不是:
if ([email protected]($tmpFile, $cache))
{
sfContext::getInstance()->getLogger()->info('attempt to renaming ' . $tmpFile . ' failed, trying copy');
if (copy($tmpFile, $cache))
{
sfContext::getInstance()->getLogger()->info('copy successful, now unlinking ' . $tmpFile);
unlink($tmpFile);
}
else
{
sfContext::getInstance()->getLogger()->err('probem with copy for file '.$tmpFile);
}
}
你知道,在Windows中,刪除文件實際上需要一個單獨的許可?檢查相應的用戶是否確實擁有臨時目錄的刪除權限。 – Charles 2010-07-25 15:53:37
是的,我知道這一點。我甚至給了用戶關於目錄(緩存 - Symfony的文件夾和所有子文件夾)的所有權利。最好的部分是,這個問題只發生在有時(不可複製),而不是每一個請求:-( – Timo 2010-07-25 16:31:56