From: Robin Appelman Date: Thu, 28 Apr 2011 14:54:10 +0000 (+0200) Subject: move sqlite database into the data folder, makes it easier to set the correct permissions X-Git-Tag: v3.0~267^2~558^2~34^2~3 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1850bddb673d4e19e4ff5dd58c99855b1c0f7a71;p=nextcloud-server.git move sqlite database into the data folder, makes it easier to set the correct permissions --- diff --git a/3dparty/MDB2/Driver/Manager/sqlite.php b/3dparty/MDB2/Driver/Manager/sqlite.php index 3a5d266280e..5258cff891d 100644 --- a/3dparty/MDB2/Driver/Manager/sqlite.php +++ b/3dparty/MDB2/Driver/Manager/sqlite.php @@ -71,6 +71,8 @@ class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common */ function createDatabase($name, $options = array()) { + global $SERVERROOT; + $datadir=OC_CONFIG::getValue( "datadirectory", "$SERVERROOT/data" ); $db =$this->getDBInstance(); if (PEAR::isError($db)) { return $db; @@ -82,7 +84,8 @@ class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common 'database already exists', __FUNCTION__); } $php_errormsg = ''; - $handle = @sqlite_open($database_file, $db->dsn['mode'], $php_errormsg); + $database_file="$datadir/$database_file.db"; + $handle = sqlite_open($database_file, $db->dsn['mode'], $php_errormsg); if (!$handle) { return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null, (isset($php_errormsg) ? $php_errormsg : 'could not create the database file'), __FUNCTION__); diff --git a/3dparty/MDB2/Driver/sqlite.php b/3dparty/MDB2/Driver/sqlite.php index 061b9c67aaa..49a8cbdfbc2 100644 --- a/3dparty/MDB2/Driver/sqlite.php +++ b/3dparty/MDB2/Driver/sqlite.php @@ -347,6 +347,8 @@ class MDB2_Driver_sqlite extends MDB2_Driver_Common **/ function connect() { + global $SERVERROOT; + $datadir=OC_CONFIG::getValue( "datadirectory", "$SERVERROOT/data" ); $database_file = $this->_getDatabaseFile($this->database_name); if (is_resource($this->connection)) { //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 @@ -370,6 +372,9 @@ class MDB2_Driver_sqlite extends MDB2_Driver_Common } if ($database_file !== ':memory:') { + if(!strpos($database_file,'.db')){ + $database_file="$datadir/$database_file.db"; + } if (!file_exists($database_file)) { if (!touch($database_file)) { return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null, @@ -405,7 +410,9 @@ class MDB2_Driver_sqlite extends MDB2_Driver_Common $php_errormsg = ''; if (version_compare('5.1.0', PHP_VERSION, '>')) { @ini_set('track_errors', true); + echo 1; $connection = @$connect_function($database_file); + echo 2; @ini_restore('track_errors'); } else { $connection = @$connect_function($database_file, 0666, $php_errormsg); diff --git a/lib/base.php b/lib/base.php index 10d59a9d0d6..ab8d0d056b1 100644 --- a/lib/base.php +++ b/lib/base.php @@ -302,20 +302,6 @@ class OC_UTIL { //check for correct file permissions if(!stristr(PHP_OS, 'WIN')){ - if($CONFIG_DBTYPE=='sqlite'){ - $file=$SERVERROOT.'/'.$CONFIG_DBNAME; - if(file_exists($file)){ - $prems=substr(decoct(fileperms($file)),-3); - if(substr($prems,2,1)!='0'){ - @chmod($file,0660); - clearstatcache(); - $prems=substr(decoct(fileperms($file)),-3); - if(substr($prems,2,1)!='0'){ - $errors[]=array('error'=>'SQLite database file ('.$file.') is readable from the web
','hint'=>$permissionsHint); - } - } - } - } $prems=substr(decoct(fileperms($CONFIG_DATADIRECTORY_ROOT)),-3); if(substr($prems,-1)!='0'){ OC_HELPER::chmodr($CONFIG_DATADIRECTORY_ROOT,0770); diff --git a/lib/database.php b/lib/database.php index 97651ccf50a..3c2480c8b6d 100644 --- a/lib/database.php +++ b/lib/database.php @@ -43,8 +43,8 @@ class OC_DB { $CONFIG_DBUSER = OC_CONFIG::getValue( "dbuser", "" );; $CONFIG_DBPASSWORD = OC_CONFIG::getValue( "dbpassword", "" );; $CONFIG_DBTYPE = OC_CONFIG::getValue( "dbtype", "sqlite" );; - global $DOCUMENTROOT; global $SERVERROOT; + $datadir=OC_CONFIG::getValue( "datadirectory", "$SERVERROOT/data" ); // do nothing if the connection already has been established if(!self::$DBConnection){ @@ -64,7 +64,7 @@ class OC_DB { // sqlite $dsn = array( 'phptype' => 'sqlite', - 'database' => "$SERVERROOT/$CONFIG_DBNAME", + 'database' => "$datadir/$CONFIG_DBNAME.db", 'mode' => '0644' ); } elseif( $CONFIG_DBTYPE == 'mysql' ){ @@ -256,9 +256,9 @@ class OC_DB { if( $definition instanceof MDB2_Schema_Error ){ die( $definition->getMessage().': '.$definition->getUserInfo()); } - if(OC_CONFIG::getValue('dbtype','sqlite')=='sqlite'){ - $definition['overwrite']=true;//always overwrite for sqlite - } +// if(OC_CONFIG::getValue('dbtype','sqlite')=='sqlite'){ +// $definition['overwrite']=true;//always overwrite for sqlite +// } $ret=self::$schema->createDatabase( $definition ); // Die in case something went wrong diff --git a/lib/installer.php b/lib/installer.php index 1222a22e71c..0646ef8e0ea 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -136,7 +136,7 @@ class OC_INSTALLER{ global $SERVERROOT; global $WEBROOT; $content="ErrorDocument 404 /$WEBROOT/templates/404.php\n"; - file_put_contents($SERVERROOT.'/.htaccess',$content); + @file_put_contents($SERVERROOT.'/.htaccess',$content); //supress errors in case we don't have permissions for it $content="deny from all"; file_put_contents(OC_CONFIG::getValue('datadirectory',$SERVERROOT.'/data').'/.htaccess',$content);