diff --git a/interface/lib/classes/validate_datetime.inc.php b/interface/lib/classes/validate_datetime.inc.php
index 2cb35f44e99385d5ecdf0ca0cebd1a94d0fff1b7..055c0e25a089d33a4f741a7253bcaf70db2052b9 100755
--- a/interface/lib/classes/validate_datetime.inc.php
+++ b/interface/lib/classes/validate_datetime.inc.php
@@ -42,7 +42,7 @@ class validate_datetime
 	{
 		if (is_array($field_value) && count($field_value) >= 5)
 		{
-			$result = array_filter($field_value, create_function('$dt_unit', 'return ($dt_unit > 0);'));
+			$result = array_filter($field_value, function($dt_unit) {return ($dt_unit > 0);});
 			return count($result) !== 0;
 		}
 
@@ -86,7 +86,7 @@ class validate_datetime
 	{
 		if(!is_array($field_value)) return 0;
 		$second = 0;
-		$filtered_values = array_map(create_function('$item', 'return (int)$item;'), $field_value);
+		$filtered_values = array_map(function($item) {return (int)$item;}, $field_value);
 		extract($filtered_values, EXTR_OVERWRITE);
 
 		return mktime($hour, $minute, $second, $month, $day, $year);
diff --git a/interface/web/mailuser/mail_user_autoresponder_edit.php b/interface/web/mailuser/mail_user_autoresponder_edit.php
index 827a585e509edfb5fb261d810d4dd6501f290521..848a3339f0fd25888343ed9e1da77aeb3f6664f0 100644
--- a/interface/web/mailuser/mail_user_autoresponder_edit.php
+++ b/interface/web/mailuser/mail_user_autoresponder_edit.php
@@ -64,8 +64,8 @@ class page_action extends tform_actions {
 
 		//* if autoresponder checkbox not selected, do not save dates
 		if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) {
-			$this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_start_date']);
-			$this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_end_date']);
+			$this->dataRecord['autoresponder_start_date'] = array_map(function($item) { return 0;}), $this->dataRecord['autoresponder_start_date']);
+			$this->dataRecord['autoresponder_end_date'] = array_map(function($item) { return 0;}), $this->dataRecord['autoresponder_end_date']);
 			
 			/* To be used when we go to PHP 7.x as min PHP version
 			$this->dataRecord['autoresponder_start_date'] = array_map( function ('$item') { 'return 0;' }, $this->dataRecord['autoresponder_start_date']);
diff --git a/server/lib/classes/cron.d/100-monitor_cpu.inc.php b/server/lib/classes/cron.d/100-monitor_cpu.inc.php
index f570eeb81913110d1d40482febee8879c02fd2d1..1d67be73704757262ae9f89f4078981cff037fba 100644
--- a/server/lib/classes/cron.d/100-monitor_cpu.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_cpu.inc.php
@@ -78,7 +78,7 @@ class cronjob_monitor_cpu extends cronjob {
 
 				$part = preg_split('/:/', $line);
 				$key = trim($part[0]);
-				$value = trim($part[1]);
+				$value = (isset($part[1]))?trim($part[1]):'';
 				if ($key == 'processor')
 					$processor = intval($value);
 				if ($key != '')
diff --git a/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php b/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php
index 1d03949a8cf1c7457fd9b7e96a51be5fe73b57f9..a3c3a3448fdb38287ec50f386e214ce3595f255d 100644
--- a/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_disk_usage.inc.php
@@ -83,7 +83,7 @@ class cronjob_monitor_disk_usage extends cronjob {
 		 * ignore the first line, process the rest
 		 */
 		for ($i = 1; $i <= sizeof($df); $i++) {
-			if ($df[$i] != '') {
+			if (isset($df[$i]) && $df[$i] != '') {
 				/*
 				 * Make an array of the data
 				 */
diff --git a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php
index 33c7e59589a0b053f9bb3317d103ed263fd25c07..32a9c410e8fa4797da178e7e8f94f7cab13386ca 100644
--- a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php
@@ -78,7 +78,7 @@ class cronjob_monitor_hd_quota extends cronjob {
 
 		//* ignore the first 5 lines, process the rest
 		for ($i = 5; $i <= sizeof($df); $i++) {
-			if ($df[$i] != '') {
+			if (isset($df[$i]) && $df[$i] != '') {
 				//* Make a array of the data
 				$s = preg_split('/[\s]+/', $df[$i]);
 				$username = $s[0];
@@ -106,7 +106,7 @@ class cronjob_monitor_hd_quota extends cronjob {
 
 		//* ignore the first 5 lines, process the rest
 		for ($i = 5; $i <= sizeof($df); $i++) {
-			if ($df[$i] != '') {
+			if (isset($df[$i]) && $df[$i] != '') {
 				//* Make a array of the data
 				$s = preg_split('/[\s]+/', $df[$i]);
 				$groupname = $s[0];
diff --git a/server/lib/classes/cron.d/100-monitor_mail_queue.inc.php b/server/lib/classes/cron.d/100-monitor_mail_queue.inc.php
index b259904d55752c36407517f87aed98863161ba4c..f39dd00a6eea4c917980ba0a4f2cc7ae5e99f854 100644
--- a/server/lib/classes/cron.d/100-monitor_mail_queue.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_mail_queue.inc.php
@@ -89,8 +89,8 @@ class cronjob_monitor_mail_queue extends cronjob {
 		$tmp = explode("\n", $data['output']);
 		$more = $tmp[sizeof($tmp) - 1];
 		$res = $this->_getIntArray($more);
-		$data['bytes'] = $res[0];
-		$data['requests'] = $res[1];
+		$data['bytes'] = (isset($res[0]))?$res[0]:0;
+		$data['requests'] = (isset($res[1]))?$res[1]:0;
 
 		/** The state of the mailq. */
 		$state = 'ok';
diff --git a/server/lib/classes/cron.d/100-monitor_mem_usage.inc.php b/server/lib/classes/cron.d/100-monitor_mem_usage.inc.php
index 73567478dc33cb2aee8f903ffe8358f45e460648..613287267df7e03752556c90887e93d6f0cb58c7 100644
--- a/server/lib/classes/cron.d/100-monitor_mem_usage.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_mem_usage.inc.php
@@ -78,7 +78,7 @@ class cronjob_monitor_mem_usage extends cronjob {
 			$key = trim($part[0]);
 			$tmp = explode(' ', trim($part[1]));
 			$value = 0;
-			if ($tmp[1] == 'kB')
+			if (isset($tmp[1]) && $tmp[1] == 'kB')
 				$value = $tmp[0] * 1024;
 			$data[$key] = $value;
 		}
diff --git a/server/lib/classes/libdatetime.inc.php b/server/lib/classes/libdatetime.inc.php
index fe2b81553b25849fb956cdfa69d1b48e7b77015e..a0633266fc4cd1ea0d31dead028aa194f01906cf 100644
--- a/server/lib/classes/libdatetime.inc.php
+++ b/server/lib/classes/libdatetime.inc.php
@@ -152,7 +152,7 @@ abstract class ISPConfigDateTime {
 	 * - onlytime: HH:MM
 	 * - rss: Rss time format for XML
 	 * - nice: if you prepend a nice: (like nice:long) you will get results like "today" or "yesterday" if applicable
-	 * - custom: you can give a strftime format like %d.%m.%Y %H:%M if you prepend custom: to it
+	 * - custom: you can give a php date function format like d.m.Y H:i if you prepend custom: to it
 	 * @param bool $time if true apped the time to the date string
 	 * @param bool $seconds if true append the seconds to the time
 	 * @return string date string
@@ -174,15 +174,15 @@ abstract class ISPConfigDateTime {
 		$fmt = '';
 		$prepend = '';
 		if(substr($format, 0, 5) == 'nice:') {
-			if(strftime('%d.%m.%Y', $date) == strftime('%d.%m.%Y', $portal->getTime())) {
+			if(date('d.m.Y', $date) == date('d.m.Y', $portal->getTime())) {
 				if($time == true) $format = 'onlytime';
 				else $format = '';
 				$prepend = 'Heute';
-			} elseif(strftime('%d.%m.%Y', $date) == strftime('%d.%m.%Y', $portal->getTime() - 86400)) {
+			} elseif(date('d.m.Y', $date) == date('d.m.Y', $portal->getTime() - 86400)) {
 				if($time == true) $format = 'onlytime';
 				else $format = '';
 				$prepend = 'Gestern';
-			} elseif(strftime('%d.%m.%Y', $date) == strftime('%d.%m.%Y', $portal->getTime() + 86400)) {
+			} elseif(date('d.m.Y', $date) == date('d.m.Y', $portal->getTime() + 86400)) {
 				if($time == true) $format = 'onlytime';
 				else $format = '';
 				$prepend = 'Morgen';
@@ -195,21 +195,21 @@ abstract class ISPConfigDateTime {
 			$time = false;
 		}
 
-		if($format == 'short') $fmt = '%d.%m.%y';
-		elseif($format == 'veryshort') $fmt = '%d.%m.';
-		elseif($format == 'medium') $fmt = '%d.%m.%Y';
-		elseif($format == 'long') $fmt = '%d. %B %Y';
-		elseif($format == 'extra') $fmt = '%A, %d. %B %Y';
-		elseif($format == 'day') $fmt = '%d';
-		elseif($format == 'monthnum') $fmt = '%m';
-		elseif($format == 'shortmonth') $fmt = '%b';
-		elseif($format == 'month') $fmt = '%B';
-		elseif($format == 'shortyear') $fmt = '%y';
-		elseif($format == 'year') $fmt = '%Y';
-		elseif($format == 'onlydate') $fmt = '%d.%m.';
-		elseif($format == 'onlydatelong') $fmt = '%d. %B';
+		if($format == 'short') $fmt = 'd.m.y';
+		elseif($format == 'veryshort') $fmt = 'd.m.';
+		elseif($format == 'medium') $fmt = 'd.m.Y';
+		elseif($format == 'long') $fmt = 'd. B Y';
+		elseif($format == 'extra') $fmt = 'A, d. B Y';
+		elseif($format == 'day') $fmt = 'd';
+		elseif($format == 'monthnum') $fmt = 'm';
+		elseif($format == 'shortmonth') $fmt = 'b';
+		elseif($format == 'month') $fmt = 'B';
+		elseif($format == 'shortyear') $fmt = 'y';
+		elseif($format == 'year') $fmt = 'Y';
+		elseif($format == 'onlydate') $fmt = 'd.m.';
+		elseif($format == 'onlydatelong') $fmt = 'd. B';
 		elseif($format == 'onlytime') {
-			$fmt = '%H:%M';
+			$fmt = 'H:i';
 			$time = false;
 		} elseif($format == 'rss') {
 			$ret = date(DATE_RSS, $date);
@@ -220,9 +220,9 @@ abstract class ISPConfigDateTime {
 			if($prepend != '') $ret = $prepend . ' ' . $ret;
 			return $ret;
 		}
-		if($time == true) $fmt .= ' %H:%M' . ($seconds == true ? ':%S' : '');
+		if($time == true) $fmt .= ' H:i' . ($seconds == true ? ':s' : '');
 
-		if($fmt != '') $ret = strftime($fmt, $date);
+		if($fmt != '') $ret = date($fmt, $date);
 		else $ret = '';
 
 		if($prepend != '') $ret = trim($prepend . ' ' . $ret);
@@ -249,10 +249,10 @@ abstract class ISPConfigDateTime {
 	 * @return mixed either int (months) or array of int (0 => years, 1 => months) or FALSE on invalid dates
 	 */
 	public static function months_between($date_from, $date_to, $return_years = false, $include_both = false) {
-		$date_from = self::to_string($date_from, 'custom:%Y%m');
+		$date_from = self::to_string($date_from, 'custom:Ym');
 		if($date_from === false) return $date_from;
 
-		$date_to = self::to_string($date_to, 'custom:%Y%m');
+		$date_to = self::to_string($date_to, 'custom:Ym');
 		if($date_to === false) return $date_to;
 
 		$date_from = intval($date_from);
@@ -294,12 +294,12 @@ abstract class ISPConfigDateTime {
 	 * @return mixed either int (days) or FALSE on invalid dates
 	 */
 	public static function days_between($date_from, $date_to, $include_both = false) {
-		$date_from = self::to_string($date_from, 'custom:%Y-%m-%d');
+		$date_from = self::to_string($date_from, 'custom:Y-m-d');
 		if($date_from === false) return $date_from;
 		list($y, $m, $d) = explode('-', $date_from);
 		$ts_from = mktime(0, 0, 0, $m, $d, $y);
 
-		$date_to = self::to_string($date_to, 'custom:%Y-%m-%d');
+		$date_to = self::to_string($date_to, 'custom:Y-m-d');
 		if($date_to === false) return $date_to;
 		list($y, $m, $d) = explode('-', $date_to);
 		$ts_to = mktime(0, 0, 0, $m, $d, $y);
@@ -364,7 +364,7 @@ abstract class ISPConfigDateTime {
 		if($date === false) $date = $portal->getTime(true);
 
 		if(is_numeric($date)) {
-			return $no_time ? strftime('%Y-%m-%d', $date) : strftime('%Y-%m-%d %H:%M:%S', $date);
+			return $no_time ? date('Y-m-d', $date) : date('Y-m-d H:i:s', $date);
 		}
 
 		if(preg_match('/^(.*)(\d{1,2}:\d{1,2}(:\d{1,2})?)(\D|$)/', $date, $matches)) {
@@ -473,7 +473,7 @@ abstract class ISPConfigDateTime {
 		if($date === false) return $date;
 
 		list($year, $month, $day) = explode('-', $date);
-		list($curyear, $curmonth, $curday) = explode('-', strftime('%Y-%m-%d', $portal->getTime()));
+		list($curyear, $curmonth, $curday) = explode('-', date('Y-m-d', $portal->getTime()));
 
 		$year_diff = $curyear - $year;
 		$month_diff = $curmonth - $month;