diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php
index 21ac30f9b087475c2764b45b0c594deb094a664b..8372a6e2366fab85d232fbb748d862514af07b0c 100644
--- a/setup/inc/class.installer.php
+++ b/setup/inc/class.installer.php
@@ -113,10 +113,14 @@ class Installer extends SetupWizard {
         $debug = true; //XXX:Change it to true to show SQL errors.
 
         //Last minute checks.
-        if(!file_exists($schemaFile))
+        if(!file_exists($schemaFile) || !($fp = fopen($schemaFile, 'rb')))
             $this->errors['err']='Internal Error - please make sure your download is the latest (#1)';
-        elseif(!($signature=trim(file_get_contents("$schemaFile.md5"))) || strcasecmp($signature, md5_file($schemaFile)))
-            $this->errors['err']='Unknown or invalid schema signature ('.$signature.' .. '.md5_file($schemaFile).')';
+        elseif(
+                !($signature=trim(file_get_contents("$schemaFile.md5")))
+                || !($hash=md5(fread($fp, filesize($schemaFile))))
+                || strcasecmp($signature, $hash))
+            $this->errors['err']='Unknown or invalid schema signature ('
+                .$signature.' .. '.$hash.')';
         elseif(!file_exists($this->getConfigFile()) || !($configFile=file_get_contents($this->getConfigFile())))
             $this->errors['err']='Unable to read config file. Permission denied! (#2)';
         elseif(!($fp = @fopen($this->getConfigFile(),'r+')))