时间:2010-07-25 15:08:02

标签: php windows iis symfony1

3 个答案:

答案 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和它混在一起,但是在接下来的几个星期内它会这样做。否则,我的规格与你的规格非常接近。

可能不是完整的答案,但如果 已安装,那么如何禁用它并重试?