Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 7900)
+++ wp-includes/default-filters.php	(working copy)
@@ -189,5 +189,7 @@
 add_action('template_redirect', 'wp_old_slug_redirect');
 add_action('edit_post', 'wp_check_for_changed_slugs');
 add_action('edit_form_advanced', 'wp_remember_old_slug');
-
+// Preflight checks
+add_action('wp_preflightchecks','preflight_memorycheck');
+add_action('wp_preflightchecks','preflight_phpversion');
 ?>
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 7900)
+++ wp-includes/functions.php	(working copy)
@@ -1749,4 +1749,42 @@
 	return $default;
 }
 
+function preflight_memorycheck(){
+	global $preflight_error;
+	$memory_limit = ini_get("memory_limit");
+	$memory_limit_bytes = trim($memory_limit);
+	$last = strtolower($memory_limit_bytes{strlen($memory_limit_bytes)-1});
+	switch($last) {
+	        case 'g':
+				$memory_limit_bytes *= 1024;
+			case 'm':
+			   	$memory_limit_bytes *= 1024;
+			case 'k':
+				$memory_limit_bytes *= 1024;
+	}
+
+	if($memory_limit_bytes < 8388608)
+		$preflight_error->add("preflight_warning_memory",sprintf(__("PHP Memory limit is %s. You may continue but the minimum recommended size is 8MB."),$memory_limit));
+}
+
+function preflight_phpversion(){
+	global $preflight_error;
+	//A little trick to remove custom portions of the version string	
+	$v = phpversion();
+	$v2 = Array();
+	foreach(explode('.',$v) as $b){
+		if(is_numeric($b))
+			$v2[] = $b;
+	}
+	$v = implode('.',$v2);
+	if (version_compare($v,"4.3","<"))
+		$preflight_error->add("preflight_fatal_php",__("You need PHP version 4.3 or higher to run WordPress."));
+}
+
+function preflight_phpmysql(){
+	global $preflight_error;
+	if ( !extension_loaded('mysql') && !file_exists(ABSPATH . 'wp-content/db.php') )
+    	$preflight_error->add("preflight_fatal_phpmysql",__('Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'));
+}
+
 ?>
Index: wp-admin/install.php
===================================================================
--- wp-admin/install.php	(revision 7900)
+++ wp-admin/install.php	(working copy)
@@ -40,7 +40,29 @@
 <h1><?php _e('Welcome'); ?></h1>
 <p><?php printf(__('Welcome to the famous five minute WordPress installation process! You may want to browse the <a href="%s">ReadMe documentation</a> at your leisure.  Otherwise, just fill in the information below and you\'ll be on your way to using the most extendable and powerful personal publishing platform in the world.'), '../readme.html'); ?></p>
 <!--<h2 class="step"><a href="install.php?step=1"><?php _e('First Step'); ?></a></h2>-->
+<?php
 
+	// Perform pre-flight checks. New checks can be added through the wp_preflightchecks hook. 
+	// See wp-includes/default-filters.php
+
+	global $preflight_error;
+	$preflight_error = new WP_Error();
+	do_action("wp_preflightchecks");
+	if ( !empty($preflight_error->errors) ){
+		?><h1> <?php _e("Pre-flight checks"); ?> </h1><p><?php
+		$error_codes = $preflight_error->get_error_codes();
+		$error_messages = $preflight_error->get_error_messages();
+		for($i=0;$i<count($error_messages);$i++){
+			print "$error_messages[$i]<br/>";
+			if (preg_match('/fatal/',$error_codes[$i]))
+					$fatal = true;
+		}
+		if ($fatal)
+			die(__("Errors occured which must be corrected before WordPress can be installed."));
+		?></p><?php
+	}
+
+?>
 <h1><?php _e('Information needed'); ?></h1>
 <p><?php _e("Please provide the following information.  Don't worry, you can always change these settings later."); ?></p>
 
