]> source.dussan.org Git - nextcloud-server.git/commitdiff
better display for server configuration errors
authorRobin Appelman <icewind1991@gmail.com>
Sat, 16 Apr 2011 16:26:13 +0000 (18:26 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Sat, 16 Apr 2011 16:27:58 +0000 (18:27 +0200)
css/styles.css
lib/base.php
templates/error.php

index 4fc5a39b8c0a81ade17da15a0f8b9c41050ffe9f..d6e5ea8fcc08aa8e0c3114ea8d20d56122a20b04 100644 (file)
@@ -633,3 +633,18 @@ p.actions a.delete
     border: 1px solid #CCC;
     text-align: right;
 }
+
+li.error{
+       list-style:none;
+       width: 640px;
+       margin: 4em auto;
+       padding: 1em 1em 1em 4em;
+       background-color: #FEE;
+       background-image: url(../img/task-attention.png);
+       background-position: 0.8em 0.8em;
+       background-repeat: no-repeat;
+       border: 1px solid #CCC;
+       -moz-border-radius: 10px;
+       -webkit-border-radius: 10px;
+       border-radius: 10px;
+}
\ No newline at end of file
index 712ea54d7063da8f4633e47e424b3dee59513c8f..dbeba1dd1f9d406783e0ed7da2410687c965502d 100644 (file)
@@ -222,7 +222,7 @@ class OC_UTIL {
 
        /**
         * check if the current server configuration is suitable for ownCloud
-        * @return array with error messages
+        * @return array arrays with error messages and hints
         */
        public static function checkServer(){
                global $SERVERROOT;
@@ -235,11 +235,23 @@ class OC_UTIL {
 
                //check for database drivers
                if(!is_callable('sqlite_open') and !is_callable('mysql_connect')){
-                       $errors[]='No database drivers (sqlite or mysql) installed.<br/>';
+                       $errors[]=array('error'=>'No database drivers (sqlite or mysql) installed.<br/>','hint'=>'');//TODO: sane hint
                }
                $CONFIG_DBTYPE = OC_CONFIG::getValue( "dbtype", "sqlite" );
                $CONFIG_DBNAME = OC_CONFIG::getValue( "dbname", "owncloud" );
-
+               
+               //try to get the username the httpd server runs on, used in hints
+               $stat=stat($_SERVER['DOCUMENT_ROOT']);
+               if(is_callable('posix_getpwuid')){
+                       $serverUser=posix_getpwuid($stat['uid']);
+                       $serverUser='\''.$serverUser['name'].'\'';
+               }else{
+                       $serverUser='\'www-data\' for ubuntu/debian';//TODO: try to detect the distro and give a guess based on that
+               }
+               
+               //common hint for all file permissons error messages
+               $permissionsHint="Permissions can usually be fixed by setting the owner of the directory to the user the web server runs as ($serverUser)";
+               
                //check for correct file permissions
                if(!stristr(PHP_OS, 'WIN')){
                        if($CONFIG_DBTYPE=='sqlite'){
@@ -251,7 +263,7 @@ class OC_UTIL {
                                                clearstatcache();
                                                $prems=substr(decoct(fileperms($file)),-3);
                                                if(substr($prems,2,1)!='0'){
-                                                       $errors[]='SQLite database file ('.$file.') is readable from the web<br/>';
+                                                       $errors[]=array('error'=>'SQLite database file ('.$file.') is readable from the web<br/>','hint'=>$permissionsHint);
                                                }
                                        }
                                }
@@ -262,7 +274,7 @@ class OC_UTIL {
                                clearstatcache();
                                $prems=substr(decoct(fileperms($CONFIG_DATADIRECTORY_ROOT)),-3);
                                if(substr($prems,2,1)!='0'){
-                                       $errors[]='Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable from the web<br/>';
+                                       $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable from the web<br/>','hint'=>$permissionsHint);
                                }
                        }
                        if( OC_CONFIG::getValue( "enablebackup", false )){
@@ -272,7 +284,7 @@ class OC_UTIL {
                                        clearstatcache();
                                        $prems=substr(decoct(fileperms($CONFIG_BACKUPDIRECTORY)),-3);
                                        if(substr($prems,2,1)!='0'){
-                                               $errors[]='Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable from the web<br/>';
+                                               $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable from the web<br/>','hint'=>$permissionsHint);
                                        }
                                }
                        }
@@ -280,7 +292,7 @@ class OC_UTIL {
                        //TODO: premisions checks for windows hosts
                }
                if(!is_writable($CONFIG_DATADIRECTORY_ROOT)){
-                       $errors[]='Data directory ('.$CONFIG_BACKUPDIRECTORY.') not writable by ownCloud<br/>';
+                       $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') not writable by ownCloud<br/>','hint'=>$permissionsHint);
                }
 
                //TODO: check for php modules
index e8f56d63bd17163a0fb2c033380cbc806e45f1f1..5b71c1ef7516d6177cc3414f6707fcfaab8adebf 100644 (file)
@@ -5,10 +5,12 @@
 ?>
 <div id="login">
        <img src="<?php echo image_path("", "owncloud-logo-medium-white.png"); ?>" alt="ownCloud" />
-       <br/><br/><br/><br/>
        <ul>
                <?php foreach($_["errors"] as $error):?>
-                       <li><?php echo $error ?></li>
+                       <li class='error'>
+                               <?php echo $error['error'] ?><br/>
+                               <p class='hint'><?php echo $error['hint'] ?></p>
+                       </li>
                <?php endforeach ?>
        </ul>
 </div>