diff --git a/core/setup/controller.php b/core/setup/controller.php
index 15679e339765f459ae8a344ee4b5432e5a34814b..53f247e9769c6ba8a2809110dba98ac72f871544 100644
--- a/core/setup/controller.php
+++ b/core/setup/controller.php
@@ -116,9 +116,14 @@ class Controller {
 
 		$errors = array();
 
-		if (is_dir($datadir) and is_writable($datadir)) {
+		// Create data directory to test whether the .htaccess works
+		// Notice that this is not necessarily the same data directory as the one
+		// that will effectively be used.
+		@mkdir($datadir);
+		if (is_dir($datadir) && is_writable($datadir)) {
 			// Protect data directory here, so we can test if the protection is working
 			\OC_Setup::protectDataDirectory();
+
 			try {
 				$htaccessWorking = \OC_Util::isHtaccessWorking();
 			} catch (\OC\HintException $e) {