diff --git a/setup/pub/magento/setup/readiness-check.js b/setup/pub/magento/setup/readiness-check.js index 2c46b35064292264e2a117a23a22d0e4bda4b4f5..d7c0eb243e2fccce768b7eec41e4b5b414ca7584 100644 --- a/setup/pub/magento/setup/readiness-check.js +++ b/setup/pub/magento/setup/readiness-check.js @@ -32,6 +32,11 @@ angular.module('readiness-check', []) processed: false, expanded: false }; + $scope.rawpost = { + visible: false, + processed: false, + expanded: false + }; $scope.extensions = { visible: false, processed: false, @@ -57,6 +62,19 @@ angular.module('readiness-check', []) $scope.stopProgress(); } }, + 'php-rawpost': { + url:'index.php/environment/php-rawpost', + show: function() { + $scope.startProgress(); + $scope.rawpost.visible = true; + }, + process: function(data) { + $scope.rawpost.processed = true; + angular.extend($scope.rawpost, data); + $scope.updateOnProcessed($scope.rawpost.responseType); + $scope.stopProgress(); + } + }, 'php-extensions': { url:'index.php/environment/php-extensions', show: function() { diff --git a/setup/src/Magento/Setup/Controller/Environment.php b/setup/src/Magento/Setup/Controller/Environment.php index 07dc89aff7db5eec32e2e8ae73f7bffc7f089f2c..066c58d914c86617da39fb79d720f74fb5902835 100644 --- a/setup/src/Magento/Setup/Controller/Environment.php +++ b/setup/src/Magento/Setup/Controller/Environment.php @@ -87,6 +87,29 @@ class Environment extends AbstractActionController return new JsonModel($data); } + /** + * Checks if PHP version >= 5.6.0 and always_populate_raw_post_data is set + * + * @return JsonModel + */ + public function phpRawpostAction() + { + $iniSetting = ini_get('always_populate_raw_post_data'); + $responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS; + if (version_compare(PHP_VERSION, '5.6.0') >= 0 && (int)$iniSetting > -1) { + $responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR; + } + $data = [ + 'responseType' => $responseType, + 'data' => [ + 'version' => PHP_VERSION, + 'ini' => $iniSetting + ] + ]; + + return new JsonModel($data); + } + /** * Verifies php verifications * diff --git a/setup/view/magento/setup/readiness-check/progress.phtml b/setup/view/magento/setup/readiness-check/progress.phtml index 92578438d2679326c642645e45c69543e8b53a62..0e2e9175f72be139fb98977bce52f74d1f632639 100644 --- a/setup/view/magento/setup/readiness-check/progress.phtml +++ b/setup/view/magento/setup/readiness-check/progress.phtml @@ -88,6 +88,59 @@ </div> +<div id="php-rawpost" class="rediness-check-item" ng-show="rawpost.visible"> + + <h3 class="readiness-check-title" ng-hide="version.processed"> + Checking PHP Version and PHP Raw Post Data Settings... + </h3> + + <div ng-show="rawpost.processed" ng-switch="rawpost.responseType"> + + <div ng-switch-when="success" ng-init="updateOnSuccess(rawpost)"> + + <span class="readiness-check-icon icon-success-round"></span> + + <div class="readiness-check-content"> + <h3 class="readiness-check-title">PHP Raw Post Data Check</h3> + <p> + You are not populating raw_post_data or your PHP version is less than 5.6.0 + </p> + </div> + + </div> + + <div class="readiness-check-item" ng-switch-default ng-init="updateOnError(rawpost)"> + + <div class="rediness-check-side"> + <p class="side-title">Need Help?</p> + <a href="http://www.php.net/docs.php" target="_blank">PHP Documentation</a> + </div> + + <span class="readiness-check-icon icon-failed-round"></span> + + <div class="readiness-check-content"> + <h3 class="readiness-check-title">PHP Raw Post Data Check</h3> + <p> + Your PHP Version is {{rawpost.data.version}}<br /> + always_populate_raw_post_data = {{rawpost.data.ini}}. + <a href="#php-rawpost" ng-click="updateOnExpand(rawpost)"> + <span ng-hide="rawpost.expanded">Show detail</span> + <span ng-show="rawpost.expanded">Hide detail</span> + </a> + </p> + <p ng-show="rawpost.expanded"> + $HTTP_RAW_POST_DATA is deprecated from PHP 5.6 onwards and will stop the installer from running, + please open your php.ini file and set always_populate_raw_post_data to -1 (uncomment if necessary) + </p> + <p ng-show="rawpost.expanded">If you need more help please call your hosting provider.</p> + </div> + + </div> + + </div> + +</div> + <div id="php-extensions" class="rediness-check-item" ng-show="extensions.visible"> <h3 ng-hide="extensions.processed" class="readiness-check-title">