diff --git a/.travis.yml b/.travis.yml
index 59219b8e87fc5036c5cadbf80a1b36f51e3d37ff..4ee44be4cfb41842d020bff5fb8b094a8edaa2ea 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -40,14 +40,14 @@ script:
   - >
     echo;
     echo "Running unit tests";
-    ./bin/phpunit -c typo3/sysext/core/Build/UnitTests.xml
+    ./bin/phpunit --colors -c typo3/sysext/core/Build/UnitTests.xml
   - >
     echo;
     export typo3DatabaseName="typo3";
     export typo3DatabaseHost="localhost";
     export typo3DatabaseUsername="root";
     export typo3DatabasePassword="";
-    grep directory typo3/sysext/core/Build/FunctionalTests.xml | awk '{print $1}' | sed 's%<directory>\(\.\./\)*\(typo3/sysext.*\)</directory>$%\2%g' | parallel --gnu 'echo; echo "Running functional {} tests"; ./bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml {}'
+    grep directory typo3/sysext/core/Build/FunctionalTests.xml | awk '{print $1}' | sed 's%<directory>\(\.\./\)*\(typo3/sysext.*\)</directory>$%\2%g' | parallel --gnu 'echo; echo "Running functional {} tests"; ./bin/phpunit --colors -c typo3/sysext/core/Build/FunctionalTests.xml {}'
   - >
     echo;
     echo "Running php lint";
diff --git a/typo3/sysext/core/Build/FunctionalTests.xml b/typo3/sysext/core/Build/FunctionalTests.xml
index 1705aa37fa26350bbc113686cfc63fd7f5f58a02..ee538fd09786612b6a23e31e202b87b7900a7f6c 100644
--- a/typo3/sysext/core/Build/FunctionalTests.xml
+++ b/typo3/sysext/core/Build/FunctionalTests.xml
@@ -11,7 +11,7 @@
 	backupGlobals="true"
 	backupStaticAttributes="false"
 	bootstrap="FunctionalTestsBootstrap.php"
-	colors="true"
+	colors="false"
 	convertErrorsToExceptions="true"
 	convertWarningsToExceptions="true"
 	forceCoversAnnotation="false"
diff --git a/typo3/sysext/core/Build/FunctionalTestsBootstrap.php b/typo3/sysext/core/Build/FunctionalTestsBootstrap.php
index 8fca56f67cb40c085780c3eaaf15b24e8fb4efe6..cdecd3902364bc32e0e1ed313db486a93156b80a 100644
--- a/typo3/sysext/core/Build/FunctionalTestsBootstrap.php
+++ b/typo3/sysext/core/Build/FunctionalTestsBootstrap.php
@@ -53,6 +53,7 @@ if (getenv('TYPO3_PATH_WEB')) {
 } else {
 	$webRoot = getcwd() . '/';
 }
+$webRoot = strtr($webRoot, '\\', '/');
 
 if (!defined('ORIGINAL_ROOT')) {
 	define('ORIGINAL_ROOT', $webRoot);
diff --git a/typo3/sysext/core/Build/UnitTests.xml b/typo3/sysext/core/Build/UnitTests.xml
index 49105b8906c7025b2a6bdfa8ea2ccd25b58f9859..7518119a06a57efa799d07015c133d11216380f7 100644
--- a/typo3/sysext/core/Build/UnitTests.xml
+++ b/typo3/sysext/core/Build/UnitTests.xml
@@ -2,7 +2,7 @@
 	backupGlobals="true"
 	backupStaticAttributes="false"
 	bootstrap="UnitTestsBootstrap.php"
-	colors="true"
+	colors="false"
 	convertErrorsToExceptions="true"
 	convertWarningsToExceptions="true"
 	forceCoversAnnotation="false"
@@ -82,4 +82,4 @@
 			<directory>../../../../typo3/sysext/core/Tests/Integrity/</directory>
 		</testsuite>
 	</testsuites>
-</phpunit>
\ No newline at end of file
+</phpunit>
diff --git a/typo3/sysext/core/Tests/FunctionalTestCase.php b/typo3/sysext/core/Tests/FunctionalTestCase.php
index 61c5bdead0ce931c02d81569702fdd9469a25495..6b5d0e77f4ba37c7a44f997c6bf2d0b0fdac92a9 100644
--- a/typo3/sysext/core/Tests/FunctionalTestCase.php
+++ b/typo3/sysext/core/Tests/FunctionalTestCase.php
@@ -345,10 +345,20 @@ abstract class FunctionalTestCase extends BaseTestCase {
 		$pageId = (int)$pageId;
 		$languageId = (int)$languageId;
 
+		$phpExecutable = 'php';
 		if (defined('PHP_BINARY')) {
 			$phpExecutable = PHP_BINARY;
-		} else {
+		} elseif (TYPO3_OS !== 'WIN' && defined('PHP_BINDIR')) {
 			$phpExecutable = rtrim(PHP_BINDIR, '/') . '/php';
+		} else {
+			foreach(explode(';', $_SERVER['Path']) as $path) {
+				$path = rtrim(strtr($path, '\\', '/'), '/') . '/';
+				$phpFile = 'php' . (TYPO3_OS === 'WIN' ? '.exe' : '');
+				if (file_exists($path . $phpFile) && is_file($path . $phpFile)) {
+					$phpExecutable = $path . $phpFile;
+					break;
+				}
+			}
 		}
 
 		$additionalParameter = '';
@@ -365,11 +375,19 @@ abstract class FunctionalTestCase extends BaseTestCase {
 			'requestUrl' => 'http://localhost/?id=' . $pageId . '&L=' . $languageId . $additionalParameter,
 		);
 
-		$commandParts = array(
-			escapeshellcmd($phpExecutable),
-			escapeshellarg(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Framework/Scripts/Request.php'),
-			escapeshellarg(json_encode($arguments)),
-		);
+		if (TYPO3_OS !== 'WIN') {
+			$commandParts = array(
+				escapeshellcmd($phpExecutable),
+				escapeshellarg(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Framework/Scripts/Request.php'),
+				escapeshellarg(json_encode($arguments)),
+			);
+		} else {
+			$commandParts = array(
+				escapeshellcmd($phpExecutable),
+				escapeshellarg(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Framework/Scripts/Request.php'),
+				strtr(escapeshellarg(strtr(json_encode($arguments), array('&' => '^&', '"' => '"""'))), '   ', '"""'),
+			);
+		}
 
 		$command = trim(implode(' ', $commandParts));
 		$response = shell_exec($command);