--- lib/ezutils/classes/ezini.php.old	2007-03-14 10:06:35.000000000 +0100
+++ lib/ezutils/classes/ezini.php	2007-03-14 10:06:36.000000000 +0100
@@ -454,10 +454,18 @@
         $i = 0;
         if ( is_array( $this->BlockValues )  )
         {
-            $fp = @fopen( $cachedFile, "w+" );
+	    if ( file_exists ( $cachedFile ) && !unlink ($cachedFile) ) {
+                eZDebug::writeError( "Couldn't delete old cache file '$cachedFile', perhaps wrong permissions", "eZINI" );
+		return;
+	    }
+            $fp = @fopen( $cachedFile, "x+" );
             if ( $fp === false )
             {
-                eZDebug::writeError( "Couldn't create cache file '$cachedFile', perhaps wrong permissions", "eZINI" );
+	        // if the file exists, it means another process recreated the file before us, nothing to worry about
+	    	if ( !file_exists( $cachedFile ) ) 
+		{
+               	    eZDebug::writeError( "Couldn't create cache file '$cachedFile', perhaps wrong permissions", "eZINI" );
+		}
                 return;
             }
             fwrite( $fp, "<?php\n\$eZIniCacheCodeDate = " . EZ_INI_CACHE_CODE_DATE . ";\n" );
