diff --git a/.travis.yml b/.travis.yml
index 82b5a5d21..b722fe77f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,11 +10,9 @@ php:
 services:
  - mysql
 env:
- - USER=travis DB=test
+ - MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=travis MYSQL_PASSWORD= MYSQL_DATABASE=test
 
 install:
  - composer install
 before_script:
  - mysql -e 'CREATE DATABASE IF NOT EXISTS test;'
- # In order to avoid bin/worker.php warnings
- - touch .htconfig.php
diff --git a/htconfig.php b/htconfig.php
index 0e838bd90..87c1301ab 100644
--- a/htconfig.php
+++ b/htconfig.php
@@ -23,17 +23,19 @@ $db_data = 'mysqldatabasename';
 
 // Use environment variables for mysql if they are set beforehand
 if (!empty(getenv('MYSQL_HOST'))
-	&& !empty(getenv('MYSQL_PORT'))
 	&& (!empty(getenv('MYSQL_USERNAME')) || !empty(getenv('MYSQL_USER')))
-	&& !empty(getenv('MYSQL_PASSWORD'))
+	&& !getenv('MYSQL_PASSWORD') === false
 	&& !empty(getenv('MYSQL_DATABASE'))) {
-	$db_host = getenv('MYSQL_HOST') . ':' . getenv('MYSQL_PORT');
+	$db_host = getenv('MYSQL_HOST');
+	if (!empty(getenv('MYSQL_PORT'))) {
+		$db_host .= ':' . getenv('MYSQL_PORT');
+	}
 	if (!empty(getenv('MYSQL_USERNAME'))) {
 		$db_user = getenv('MYSQL_USERNAME');
-	} elseif (!empty(getenv('MYSQL_USER'))) {
+	} else {
 		$db_user = getenv('MYSQL_USER');
 	}
-	$db_pass = getenv('MYSQL_PASSWORD');
+	$db_pass = (string) getenv('MYSQL_PASSWORD');
 	$db_data = getenv('MYSQL_DATABASE');
 }
 
diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php
index 6edd45e57..b53d59161 100644
--- a/tests/DatabaseTest.php
+++ b/tests/DatabaseTest.php
@@ -33,15 +33,13 @@ abstract class DatabaseTest extends TestCase
 		$base_config_file_path = stream_resolve_include_path($base_config_file_name);
 		$config_file_path = dirname($base_config_file_path) . DIRECTORY_SEPARATOR . $config_file_name;
 
-		$config_string = file_get_contents($base_config_file_path);
+		if (!file_exists($config_file_path)) {
+			$config_string = file_get_contents($base_config_file_path);
 
-		$config_string = str_replace('die(', '// die(', $config_string);
-		$config_string = str_replace('your.mysqlhost.com', 'localhost', $config_string);
-		$config_string = str_replace('mysqlusername'     , getenv('USER'), $config_string);
-		$config_string = str_replace('mysqlpassword'     , getenv('PASS'), $config_string);
-		$config_string = str_replace('mysqldatabasename' , getenv('DB'), $config_string);
+			$config_string = str_replace('die(', '// die(', $config_string);
 
-		file_put_contents($config_file_path, $config_string);
+			file_put_contents($config_file_path, $config_string);
+		}
 	}
 
 	/**
@@ -58,7 +56,7 @@ abstract class DatabaseTest extends TestCase
 	protected function getConnection()
 	{
 		if (!dba::$connected) {
-			dba::connect('localhost', getenv('USER'), getenv('PASS'), getenv('DB'));
+			dba::connect(getenv('MYSQL_HOST') . ':' . getenv('MYSQL_PORT'), getenv('MYSQL_USERNAME'), getenv('MYSQL_PASSWORD'), getenv('MYSQL_DATABASE'));
 
 			if (dba::$connected) {
 				$app = get_app();