diff --git a/update.php b/update.php
index 89dc829f0740ebb04b07590f5fd22390855abcf7..2d4f1e50ed83c2ce4d06c67e957583f0318d2da3 100644
--- a/update.php
+++ b/update.php
@@ -395,6 +395,8 @@ function update_check_requirements() {
   $output = update_access_denied_page();
 }
 if (isset($output) && $output) {
+  // Explictly start a session so that the update.php token will be accepted.
+  drupal_session_start();
   // We defer the display of messages until all updates are done.
   $progress_page = ($batch = batch_get()) && isset($batch['running']);
   print theme('update_page', array('content' => $output, 'show_messages' => !$progress_page));