From bb80cf4ecab3a92541bf9c2fccaa204b6ea914f9 Mon Sep 17 00:00:00 2001
From: Lukas Reschke <lukas@owncloud.com>
Date: Thu, 22 Jan 2015 13:46:40 +0100
Subject: [PATCH] Add check for `HTTP_RAW_POST_DATA` setting for >= 5.6

PHP 5.6 otherwise throws notices for perfectly valid code which results in broken endpoints.

Fixes https://github.com/owncloud/core/issues/13592
---
 .htaccess            |  1 +
 lib/private/util.php | 15 +++++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/.htaccess b/.htaccess
index af7e961379..962e969d59 100644
--- a/.htaccess
+++ b/.htaccess
@@ -12,6 +12,7 @@ php_value upload_max_filesize 513M
 php_value post_max_size 513M
 php_value memory_limit 512M
 php_value mbstring.func_overload 0
+php_value always_populate_raw_post_data -1
 <IfModule env_module>
   SetEnv htaccessWorking true
 </IfModule>
diff --git a/lib/private/util.php b/lib/private/util.php
index 3b943f046b..a4d3b558ce 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -628,6 +628,21 @@ class OC_Util {
 			);
 			$webServerRestart = true;
 		}
+
+		/**
+		 * PHP 5.6 ships with a PHP setting which throws notices by default for a
+		 * lot of endpoints. Thus we need to ensure that the value is set to -1
+		 *
+		 * @link https://github.com/owncloud/core/issues/13592
+		 */
+		if(version_compare(phpversion(), '5.6.0', '>=') &&
+			\OC::$server->getIniWrapper()->getNumeric('always_populate_raw_post_data') !== -1) {
+			$errors[] = array(
+				'error' => 'PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code.',
+				'hint' => 'To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini'
+			);
+		}
+
 		if (!self::isAnnotationsWorking()) {
 			$errors[] = array(
 				'error' => 'PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible.',
-- 
GitLab