diff --git a/update.php b/update.php
index 32d81be85918c343041dee25560057461b32f6dc..de9d03b62e089a7594b734cac1d173ebb6693b93 100644
--- a/update.php
+++ b/update.php
@@ -561,9 +561,15 @@ function update_access_denied_page() {
 </ol>';
 }
 
-// This code may be removed later. It is part of the Drupal 4.5 to 4.7 migration.
+// This code may be removed later. It is part of the Drupal 4.5 to 4.8 migration.
 function update_fix_system_table() {
   drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
+  $core_modules = array('aggregator', 'archive', 'block', 'blog', 'blogapi', 'book', 'comment', 'contact', 'drupal', 'filter', 'forum', 'help', 'legacy', 'locale', 'menu', 'node', 'page', 'path', 'ping', 'poll', 'profile', 'search', 'statistics', 'story', 'system', 'taxonomy', 'throttle', 'tracker', 'upload', 'user', 'watchdog');
+  foreach ($core_modules as $module) {
+    $old_path = "modules/$module.module";
+    $new_path = "modules/$module/$module.module";
+    db_query("UPDATE {system} SET filename = '%s' WHERE filename = '%s'", $new_path, $old_path);
+  }
   $row = db_fetch_object(db_query_range('SELECT * FROM {system}', 0, 1));
   if (!isset($row->weight)) {
     $ret = array();