diff options
Diffstat (limited to 'install/ElggInstaller.php')
-rw-r--r-- | install/ElggInstaller.php | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index 6d1553572..359ed8f99 100644 --- a/install/ElggInstaller.php +++ b/install/ElggInstaller.php @@ -122,15 +122,15 @@ class ElggInstaller { // check PHP parameters and libraries $this->checkPHP($report); - // @todo - rewrite this to handle different web servers - // attempt to create .htaccess file - $htaccessExists = $this->createHtaccess($report); - - // check rewrite module - if ($htaccessExists) { - $this->checkRewriteModule($report); + // check rewrite. If failure, create .htaccess and try again. + $rewriteResult = $this->checkRewriteRules($report); + if ($rewriteResult == FALSE) { + $htaccessExists = $this->createHtaccess($report); + if ($htaccessExists) { + $this->checkRewriteRules($report); + } } - + // check for existence of settings file if ($this->checkSettingsFile() != TRUE) { // no file, so check permissions on engine directory @@ -871,11 +871,11 @@ class ElggInstaller { } /** - * Confirm that Apache's rewrite module and AllowOverride are set up + * Confirm that the rewrite rules are firing * @param array $report * @return bool */ - protected function checkRewriteModule(&$report) { + protected function checkRewriteRules(&$report) { global $CONFIG; $url = "{$CONFIG->wwwroot}modrewrite.php"; @@ -885,13 +885,14 @@ class ElggInstaller { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); $response = curl_exec($ch); curl_close($ch); $result = $response === 'success'; } else if (ini_get('allow_url_fopen')) { // use file_get_contents as fallback - $data = file_get_contents($url); - $result = $data === 'success'; + $response = file_get_contents($url); + $result = $response === 'success'; } else { $report['htaccess'] = array( array( @@ -910,6 +911,9 @@ class ElggInstaller { ) ); } else { + if (strpos($response, 'No input file specified.') !== FALSE) { + // nginx with no or bad rewrite rules + } $report['htaccess'] = array( array( 'severity' => 'failure', |