答案 0 :(得分:1)
我检查了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 (!@rename($tmpFile, $cache))
{
if (copy($tmpFile, $cache))
{
unlink($tmpFile);
}
}
这段代码应该在354行的sfConfigCache.php中,你能检查一下这行吗?如果没有,请考虑更新或修补,如果是,您可以在取消链接之前记录$ tmpFile,只是为了查看是否尝试取消链接这些文件。 要添加更多信息日志,您应该尝试使用此代码:
if (!@rename($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);
}
}
答案 1 :(得分:0)
'con1718.tmp'看起来像是用tempnam PHP函数生成的临时文件名:
tempnam('c:/tmp', 'con'); // produces something like c:\\tmp\con1234.tmp
我在symfony源上使用grep来查找这样的调用,但没有找到与'con'一起使用的任何tempnam()。也许这是你正在使用的插件之一?
答案 2 :(得分:0)
您有可能运行适用于PHP的Windows缓存扩展( Web平台安装程序2.0 中的 Windows缓存1.1 for PHP 5.2 ) ?我注意到虽然这个软件包试图模仿广泛使用的 APC PHP加速器的行为,但它确实消耗了大量资源并做了一些奇怪的事情,特别是在奇怪的地方写文件。我还没有把symfony和它混在一起,但是在接下来的几个星期内它会这样做。否则,我的规格与你的规格非常接近。
可能不是完整的答案,但如果 已安装,那么如何禁用它并重试?