From 70a781fa5a654dce4314182bae59377f1d52ae56 Mon Sep 17 00:00:00 2001 From: Andreas Neustifter Date: Fri, 27 Apr 2018 21:27:55 +0200 Subject: [PATCH] Proper error when rewrite fails during install. When Curl tries to fetch the rewrite test URL and something goes wrong the user has no clue what was the problem. This problems can include: - The rewriting not working at all. - HTTPS redirects do not work. - Curl does not accept the presented SSL cert. This commit fixes this by providing the Curl error message to the user to further debug the problem. Fixes #3629.~ --- mod/install.php | 19 +++++++++++++------ src/Util/Network.php | 10 +++++++--- view/install/style.css | 3 +++ view/templates/install_checks.tpl | 8 +++++++- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/mod/install.php b/mod/install.php index eb740c7b64..06f728729c 100644 --- a/mod/install.php +++ b/mod/install.php @@ -303,12 +303,13 @@ function install_content(App $a) { * required : boolean * help : string optional */ -function check_add(&$checks, $title, $status, $required, $help) { +function check_add(&$checks, $title, $status, $required, $help, $error_msg = "") { $checks[] = [ 'title' => $title, 'status' => $status, 'required' => $required, 'help' => $help, + 'error_msg' => $error_msg, ]; } @@ -489,18 +490,24 @@ function check_smarty3(&$checks) { function check_htaccess(&$checks) { $status = true; $help = ""; + $error_msg = ""; if (function_exists('curl_init')) { - $test = Network::fetchUrl(System::baseUrl()."/install/testrewrite"); + $test = Network::fetchUrlFull(System::baseUrl()."/install/testrewrite"); - if ($test != "ok") { - $test = Network::fetchUrl(normalise_link(System::baseUrl()."/install/testrewrite")); + $url = normalise_link(System::baseUrl()."/install/testrewrite"); + if ($test['body'] != "ok") { + $test = Network::fetchUrlFull($url); } - if ($test != "ok") { + if ($test['body'] != "ok") { $status = false; $help = L10n::t('Url rewrite in .htaccess is not working. Check your server configuration.'); + $error_msg = []; + $error_msg['head'] = L10n::t('Error message from Curl when fetching'); + $error_msg['url'] = $test['redirect_url']; + $error_msg['msg'] = $test['error']; } - check_add($checks, L10n::t('Url rewrite is working'), $status, true, $help); + check_add($checks, L10n::t('Url rewrite is working'), $status, true, $help, $error_msg); } else { // cannot check modrewrite if libcurl is not installed /// @TODO Maybe issue warning here? diff --git a/src/Util/Network.php b/src/Util/Network.php index 4a11f92595..91c4b7d395 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -36,7 +36,13 @@ class Network */ public static function fetchUrl($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = 0) { - $ret = self::curl( + $ret = fetchUrlFull($url, $binary, $redirects, $timeout, $accept_content, $cookiejar); + + return($ret['body']); + } + public static function fetchUrlFull($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = 0) + { + return self::curl( $url, $binary, $redirects, @@ -45,8 +51,6 @@ class Network 'cookiejar'=>$cookiejar ] ); - - return($ret['body']); } /** diff --git a/view/install/style.css b/view/install/style.css index 2f995d5993..d6140a1bb3 100644 --- a/view/install/style.css +++ b/view/install/style.css @@ -32,6 +32,9 @@ td.help { td.help blockquote { margin-left: 60px; } +.error_header { + margin-left: 60px; +} input[type="submit"] { margin: 2em 0; } diff --git a/view/templates/install_checks.tpl b/view/templates/install_checks.tpl index 10a197482b..f960729111 100644 --- a/view/templates/install_checks.tpl +++ b/view/templates/install_checks.tpl @@ -16,7 +16,13 @@ {{/if}} {{if $check.required}}(required){{/if}} {{if $check.help}} -
{{$check.help}}
+ +
{{$check.help}}
+ {{if $check.error_msg}} +
{{$check.error_msg.head}}
{{$check.error_msg.url}}
+
{{$check.error_msg.msg}}
+ {{/if}} + {{/if}} {{/foreach}}