Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
our_own_cloud_project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
die_coolen_jungs
our_own_cloud_project
Commits
795e7880
Commit
795e7880
authored
12 years ago
by
Jörn Friedrich Dreyer
Browse files
Options
Downloads
Patches
Plain Diff
add oracle to install & setup
parent
3aff7a29
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
core/js/setup.js
+7
-0
7 additions, 0 deletions
core/js/setup.js
core/templates/installation.php
+22
-3
22 additions, 3 deletions
core/templates/installation.php
lib/db.php
+39
-7
39 additions, 7 deletions
lib/db.php
lib/setup.php
+193
-5
193 additions, 5 deletions
lib/setup.php
with
261 additions
and
15 deletions
core/js/setup.js
+
7
−
0
View file @
795e7880
...
...
@@ -4,6 +4,7 @@ $(document).ready(function() {
sqlite
:
!!
$
(
'
#hasSQLite
'
).
val
(),
mysql
:
!!
$
(
'
#hasMySQL
'
).
val
(),
postgresql
:
!!
$
(
'
#hasPostgreSQL
'
).
val
(),
oracle
:
!!
$
(
'
#hasOracle
'
).
val
(),
}
$
(
'
#selectDbType
'
).
buttonset
();
...
...
@@ -34,6 +35,12 @@ $(document).ready(function() {
$
(
'
#dbhost
'
).
show
(
250
);
$
(
'
#dbhostlabel
'
).
show
(
250
);
});
$
(
'
#oci
'
).
click
(
function
()
{
$
(
'
#use_other_db
'
).
slideDown
(
250
);
$
(
'
#dbhost
'
).
show
(
250
);
$
(
'
#dbhostlabel
'
).
show
(
250
);
});
$
(
'
input[checked]
'
).
trigger
(
'
click
'
);
...
...
This diff is collapsed.
Click to expand it.
core/templates/installation.php
+
22
−
3
View file @
795e7880
<input
type=
'hidden'
id=
'hasMySQL'
value=
'
<?php
echo
$_
[
'hasMySQL'
]
?>
'
></input>
<input
type=
'hidden'
id=
'hasSQLite'
value=
'
<?php
echo
$_
[
'hasSQLite'
]
?>
'
></input>
<input
type=
'hidden'
id=
'hasPostgreSQL'
value=
'
<?php
echo
$_
[
'hasPostgreSQL'
]
?>
'
></input>
<input
type=
'hidden'
id=
'hasOracle'
value=
'
<?php
echo
$_
[
'hasOracle'
]
?>
'
></input>
<form
action=
"index.php"
method=
"post"
>
<input
type=
"hidden"
name=
"install"
value=
"true"
/>
...
...
@@ -40,7 +41,7 @@
</fieldset>
<fieldset
id=
'databaseField'
>
<?php
if
(
$_
[
'hasMySQL'
]
or
$_
[
'hasPostgreSQL'
])
$hasOtherDB
=
true
;
else
$hasOtherDB
=
false
;
//other than SQLite ?>
<?php
if
(
$_
[
'hasMySQL'
]
or
$_
[
'hasPostgreSQL'
]
or
$_
[
'hasOracle'
]
)
$hasOtherDB
=
true
;
else
$hasOtherDB
=
false
;
//other than SQLite ?>
<
legend
><?
php
echo
$l
->
t
(
'Configure the database'
);
?>
</legend>
<div
id=
"selectDbType"
>
<?php
if
(
$_
[
'hasSQLite'
])
:
?>
...
...
@@ -56,7 +57,7 @@
<?php
if
(
$_
[
'hasMySQL'
])
:
?>
<input
type=
'hidden'
id=
'hasMySQL'
value=
'true'
/>
<?php
if
(
!
$_
[
'hasSQLite'
]
and
!
$_
[
'hasPostgreSQL'
])
:
?>
<?php
if
(
!
$_
[
'hasSQLite'
]
and
!
$_
[
'hasPostgreSQL'
]
and
!
$_
[
'hasOracle'
]
)
:
?>
<p>
MySQL
<?php
echo
$l
->
t
(
'will be used'
);
?>
.
</p>
<input
type=
"hidden"
id=
"dbtype"
name=
"dbtype"
value=
"mysql"
/>
<?php
else
:
?>
...
...
@@ -66,7 +67,7 @@
<?php
endif
;
?>
<?php
if
(
$_
[
'hasPostgreSQL'
])
:
?>
<?php
if
(
!
$_
[
'hasSQLite'
]
and
!
$_
[
'hasMySQL'
])
:
?>
<?php
if
(
!
$_
[
'hasSQLite'
]
and
!
$_
[
'hasMySQL'
]
and
!
$_
[
'hasOracle'
]
)
:
?>
<p>
PostgreSQL
<?php
echo
$l
->
t
(
'will be used'
);
?>
.
</p>
<input
type=
"hidden"
id=
"dbtype"
name=
"dbtype"
value=
"pgsql"
/>
<?php
else
:
?>
...
...
@@ -74,6 +75,16 @@
<input
type=
"radio"
name=
"dbtype"
value=
'pgsql'
id=
"pgsql"
<?php
OC_Helper
::
init_radio
(
'dbtype'
,
'pgsql'
,
'sqlite'
);
?>
/>
<?php
endif
;
?>
<?php
endif
;
?>
<?php
if
(
$_
[
'hasOracle'
])
:
?>
<?php
if
(
!
$_
[
'hasSQLite'
]
and
!
$_
[
'hasMySQL'
]
and
!
$_
[
'hasPostgreSQL'
])
:
?>
<p>
Oracle
<?php
echo
$l
->
t
(
'will be used'
);
?>
.
</p>
<input
type=
"hidden"
id=
"dbtype"
name=
"dbtype"
value=
"oci"
/>
<?php
else
:
?>
<label
class=
"oci"
for=
"oci"
>
Oracle
</label>
<input
type=
"radio"
name=
"dbtype"
value=
'oci'
id=
"oci"
<?php
OC_Helper
::
init_radio
(
'dbtype'
,
'oci'
,
'sqlite'
);
?>
/>
<?php
endif
;
?>
<?php
endif
;
?>
</div>
<?php
if
(
$hasOtherDB
)
:
?>
...
...
@@ -92,6 +103,14 @@
</p>
</div>
<?php
endif
;
?>
<?php
if
(
$_
[
'hasOracle'
])
:
?>
<div
id=
"use_oracle_db"
>
<p
class=
"infield"
>
<label
for=
"dbtablespace"
class=
"infield"
>
<?php
echo
$l
->
t
(
'Database tablespace'
);
?>
</label>
<input
type=
"text"
name=
"dbtablespace"
id=
"dbtablespace"
value=
"
<?php
print
OC_Helper
::
init_var
(
'dbtablespace'
);
?>
"
autocomplete=
"off"
/>
</p>
</div>
<?php
endif
;
?>
<p
class=
"infield"
>
<label
for=
"dbhost"
class=
"infield"
>
<?php
echo
$l
->
t
(
'Database host'
);
?>
</label>
<input
type=
"text"
name=
"dbhost"
id=
"dbhost"
value=
"
<?php
print
OC_Helper
::
init_var
(
'dbhost'
,
'localhost'
);
?>
"
/>
...
...
This diff is collapsed.
Click to expand it.
lib/db.php
+
39
−
7
View file @
795e7880
...
...
@@ -44,15 +44,18 @@ class OC_DB {
* @return BACKEND_MDB2 or BACKEND_PDO
*/
private
static
function
getDBBackend
(){
$backend
=
self
::
BACKEND_MDB2
;
if
(
class_exists
(
'PDO'
)
&&
OC_Config
::
getValue
(
'installed'
,
false
)){
//check if we can use PDO, else use MDB2 (instalation always needs to be done my mdb2)
$type
=
OC_Config
::
getValue
(
"dbtype"
,
"sqlite"
);
if
(
$type
==
'oci'
)
{
//oracle also always needs mdb2
return
self
::
BACKEND_MDB2
;
}
if
(
$type
==
'sqlite3'
)
$type
=
'sqlite'
;
$drivers
=
PDO
::
getAvailableDrivers
();
if
(
array_search
(
$type
,
$drivers
)
!==
false
){
$backend
=
self
::
BACKEND_PDO
;
return
self
::
BACKEND_PDO
;
}
}
return
self
::
BACKEND_MDB2
;
}
/**
...
...
@@ -129,7 +132,14 @@ class OC_DB {
$dsn
=
'pgsql:dbname='
.
$name
.
';host='
.
$host
;
}
break
;
}
case
'oci'
:
if
(
$port
)
{
$dsn
=
'oci:dbname=//'
.
$host
.
':'
.
$port
.
'/'
.
$name
;
}
else
{
$dsn
=
'oci:dbname=//'
.
$host
.
'/'
.
$name
;
}
break
;
}
try
{
self
::
$PDO
=
new
PDO
(
$dsn
,
$user
,
$pass
,
$opts
);
}
catch
(
PDOException
$e
){
...
...
@@ -345,9 +355,17 @@ class OC_DB {
$file2
=
'static://db_scheme'
;
$content
=
str_replace
(
'*dbname*'
,
$CONFIG_DBNAME
,
$content
);
$content
=
str_replace
(
'*dbprefix*'
,
$CONFIG_DBTABLEPREFIX
,
$content
);
if
(
$CONFIG_DBTYPE
==
'pgsql'
){
//mysql support it too but sqlite doesn't
$content
=
str_replace
(
'<default>0000-00-00 00:00:00</default>'
,
'<default>CURRENT_TIMESTAMP</default>'
,
$content
);
}
/* FIXME: REMOVE this commented code
* actually mysql, postgresql, sqlite and oracle support CUURENT_TIMESTAMP
* http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
* http://www.postgresql.org/docs/8.1/static/functions-datetime.html
* http://www.sqlite.org/lang_createtable.html
* http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions037.htm
if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't
$content = str_replace( '<default>0000-00-00 00:00:00</default>', '<default>CURRENT_TIMESTAMP</default>', $content );
}
*/
file_put_contents
(
$file2
,
$content
);
// Try to create tables
...
...
@@ -363,10 +381,17 @@ class OC_DB {
// if(OC_Config::getValue('dbtype','sqlite')=='sqlite'){
// $definition['overwrite']=true;//always overwrite for sqlite
// }
if
(
OC_Config
::
getValue
(
'dbtype'
,
'sqlite'
)
===
'oci'
){
unset
(
$definition
[
'charset'
]);
//or MDB2 tries SHUTDOWN IMMEDIATE
$oldname
=
$definition
[
'name'
];
$definition
[
'name'
]
=
OC_Config
::
getValue
(
"dbuser"
,
$oldname
);
}
$ret
=
self
::
$schema
->
createDatabase
(
$definition
);
// Die in case something went wrong
if
(
$ret
instanceof
MDB2_Error
){
echo
(
self
::
$MDB2
->
getDebugOutput
());
die
(
$ret
->
getMessage
()
.
': '
.
$ret
->
getUserInfo
());
}
...
...
@@ -397,9 +422,16 @@ class OC_DB {
$file2
=
'static://db_scheme'
;
$content
=
str_replace
(
'*dbname*'
,
$previousSchema
[
'name'
],
$content
);
$content
=
str_replace
(
'*dbprefix*'
,
$CONFIG_DBTABLEPREFIX
,
$content
);
/* FIXME: REMOVE this commented code
* actually mysql, postgresql, sqlite and oracle support CUURENT_TIMESTAMP
* http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
* http://www.postgresql.org/docs/8.1/static/functions-datetime.html
* http://www.sqlite.org/lang_createtable.html
* http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions037.htm
if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't
$content = str_replace( '<default>0000-00-00 00:00:00</default>', '<default>CURRENT_TIMESTAMP</default>', $content );
}
*/
file_put_contents
(
$file2
,
$content
);
$op
=
self
::
$schema
->
updateDatabase
(
$file2
,
$previousSchema
,
array
(),
false
);
...
...
@@ -464,7 +496,7 @@ class OC_DB {
}
elseif
(
$type
==
'mysql'
){
$query
=
str_replace
(
'NOW()'
,
'CURRENT_TIMESTAMP'
,
$query
);
$query
=
str_replace
(
'now()'
,
'CURRENT_TIMESTAMP'
,
$query
);
}
elseif
(
$type
==
'pgsql'
){
}
elseif
(
$type
==
'pgsql'
||
$type
==
'oci'
){
$query
=
str_replace
(
'`'
,
'"'
,
$query
);
$query
=
str_replace
(
'NOW()'
,
'CURRENT_TIMESTAMP'
,
$query
);
$query
=
str_replace
(
'now()'
,
'CURRENT_TIMESTAMP'
,
$query
);
...
...
This diff is collapsed.
Click to expand it.
lib/setup.php
+
193
−
5
View file @
795e7880
...
...
@@ -3,11 +3,13 @@
$hasSQLite
=
(
is_callable
(
'sqlite_open'
)
or
class_exists
(
'SQLite3'
));
$hasMySQL
=
is_callable
(
'mysql_connect'
);
$hasPostgreSQL
=
is_callable
(
'pg_connect'
);
$hasOracle
=
is_callable
(
'oci_connect'
);
$datadir
=
OC_Config
::
getValue
(
'datadirectory'
,
OC
::
$SERVERROOT
.
'/data'
);
$opts
=
array
(
'hasSQLite'
=>
$hasSQLite
,
'hasMySQL'
=>
$hasMySQL
,
'hasPostgreSQL'
=>
$hasPostgreSQL
,
'hasOracle'
=>
$hasOracle
,
'directory'
=>
$datadir
,
'errors'
=>
array
(),
);
...
...
@@ -46,11 +48,14 @@ class OC_Setup {
$error
[]
=
'Specify a data folder.'
;
}
if
(
$dbtype
==
'mysql'
or
$dbtype
==
'pgsql'
)
{
//mysql and postgresql needs more config options
if
(
$dbtype
==
'mysql'
or
$dbtype
==
'pgsql'
or
$dbtype
==
'oci'
)
{
//mysql and postgresql needs more config options
if
(
$dbtype
==
'mysql'
)
$dbprettyname
=
'MySQL'
;
else
$dbprettyname
=
'PostgreSQL'
;
else
if
(
$dbtype
==
'pgsql'
)
$dbprettyname
=
'PostgreSQL'
;
else
$dbprettyname
=
'Oracle'
;
if
(
empty
(
$options
[
'dbuser'
]))
{
$error
[]
=
"
$dbprettyname
enter the database username."
;
...
...
@@ -108,7 +113,7 @@ class OC_Setup {
if
(
mysql_query
(
$query
,
$connection
))
{
//use the admin login data for the new database user
//add prefix to the mysql user name to prevent collis
s
ions
//add prefix to the mysql user name to prevent collisions
$dbusername
=
substr
(
'oc_'
.
$username
,
0
,
16
);
if
(
$dbusername
!=
$oldUser
){
//hash the password so we don't need to store the admin config in the config file
...
...
@@ -172,7 +177,7 @@ class OC_Setup {
if
(
$result
and
pg_num_rows
(
$result
)
>
0
)
{
//use the admin login data for the new database user
//add prefix to the postgresql user name to prevent collis
s
ions
//add prefix to the postgresql user name to prevent collisions
$dbusername
=
'oc_'
.
$username
;
//create a new password so we don't need to store the admin config in the config file
$dbpassword
=
md5
(
time
());
...
...
@@ -218,6 +223,116 @@ class OC_Setup {
}
}
}
elseif
(
$dbtype
==
'oci'
)
{
$dbuser
=
$options
[
'dbuser'
];
$dbpass
=
$options
[
'dbpass'
];
$dbname
=
$options
[
'dbname'
];
$dbtablespace
=
$options
[
'dbtablespace'
];
$dbhost
=
$options
[
'dbhost'
];
$dbtableprefix
=
isset
(
$options
[
'dbtableprefix'
])
?
$options
[
'dbtableprefix'
]
:
'oc_'
;
OC_CONFIG
::
setValue
(
'dbname'
,
$dbname
);
OC_CONFIG
::
setValue
(
'dbtablespace'
,
$dbtablespace
);
OC_CONFIG
::
setValue
(
'dbhost'
,
$dbhost
);
OC_CONFIG
::
setValue
(
'dbtableprefix'
,
$dbtableprefix
);
$e_host
=
addslashes
(
$dbhost
);
$e_dbname
=
addslashes
(
$dbname
);
//check if the database user has admin right
$connection_string
=
'//'
.
$e_host
.
'/'
.
$e_dbname
;
$connection
=
@
oci_connect
(
$dbuser
,
$dbpass
,
$connection_string
);
if
(
!
$connection
)
{
$e
=
oci_error
();
$error
[]
=
array
(
'error'
=>
'Oracle username and/or password not valid'
,
'hint'
=>
'You need to enter either an existing account or the administrator.'
);
return
$error
;
}
else
{
//check for roles creation rights in oracle
$query
=
"SELECT count(*) FROM user_role_privs, role_sys_privs WHERE user_role_privs.granted_role = role_sys_privs.role AND privilege = 'CREATE ROLE'"
;
$stmt
=
oci_parse
(
$connection
,
$query
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_last_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
$result
=
oci_execute
(
$stmt
);
if
(
$result
)
{
$row
=
oci_fetch_row
(
$stmt
);
}
if
(
$result
and
$row
[
0
]
>
0
)
{
//use the admin login data for the new database user
//add prefix to the oracle user name to prevent collisions
$dbusername
=
'oc_'
.
$username
;
//create a new password so we don't need to store the admin config in the config file
$dbpassword
=
md5
(
time
()
.
$dbpass
);
//oracle passwords are treated as identifiers:
// must start with aphanumeric char
// needs to be shortened to 30 bytes, as the two " needed to escape the identifier count towards the identifier length.
$dbpassword
=
substr
(
$dbpassword
,
0
,
30
);
self
::
oci_createDBUser
(
$dbusername
,
$dbpassword
,
$dbtablespace
,
$connection
);
OC_CONFIG
::
setValue
(
'dbuser'
,
$dbusername
);
OC_CONFIG
::
setValue
(
'dbname'
,
$dbusername
);
OC_CONFIG
::
setValue
(
'dbpassword'
,
$dbpassword
);
//create the database not neccessary, oracle implies user = schema
//self::oci_createDatabase($dbname, $dbusername, $connection);
}
else
{
OC_CONFIG
::
setValue
(
'dbuser'
,
$dbuser
);
OC_CONFIG
::
setValue
(
'dbpassword'
,
$dbpass
);
//create the database not neccessary, oracle implies user = schema
//self::oci_createDatabase($dbname, $dbuser, $connection);
}
//FIXME check tablespace exists: select * from user_tablespaces
// the connection to dbname=oracle is not needed anymore
oci_close
(
$connection
);
// connect to the oracle database (schema=$dbuser) an check if the schema needs to be filled
$dbuser
=
OC_CONFIG
::
getValue
(
'dbuser'
);
//$dbname = OC_CONFIG::getValue('dbname');
$dbpass
=
OC_CONFIG
::
getValue
(
'dbpassword'
);
$e_host
=
addslashes
(
$dbhost
);
$e_dbname
=
addslashes
(
$dbname
);
$connection_string
=
'//'
.
$e_host
.
'/'
.
$e_dbname
;
$connection
=
@
oci_connect
(
$dbuser
,
$dbpass
,
$connection_string
);
if
(
!
$connection
)
{
$error
[]
=
array
(
'error'
=>
'Oracle username and/or password not valid'
,
'hint'
=>
'You need to enter either an existing account or the administrator.'
);
return
$error
;
}
else
{
$query
=
"SELECT count(*) FROM user_tables WHERE table_name = :un"
;
$stmt
=
oci_parse
(
$connection
,
$query
);
$un
=
$dbtableprefix
.
'users'
;
oci_bind_by_name
(
$stmt
,
':un'
,
$un
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_last_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
$result
=
oci_execute
(
$stmt
);
if
(
$result
)
{
$row
=
oci_fetch_row
(
$stmt
);
}
if
(
!
$result
or
$row
[
0
]
==
0
)
{
OC_DB
::
createDbFromStructure
(
'db_structure.xml'
);
}
}
}
}
else
{
//delete the old sqlite database first, might cause infinte loops otherwise
if
(
file_exists
(
"
$datadir
/owncloud.db"
)){
...
...
@@ -307,6 +422,79 @@ class OC_Setup {
echo
(
$entry
);
}
}
/**
*
* @param String $name
* @param String $password
* @param String $tablespace
* @param resource $connection
*/
private
static
function
oci_createDBUser
(
$name
,
$password
,
$tablespace
,
$connection
)
{
$query
=
"SELECT * FROM all_users WHERE USERNAME = :un"
;
$stmt
=
oci_parse
(
$connection
,
$query
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
oci_bind_by_name
(
$stmt
,
':un'
,
$name
);
$result
=
oci_execute
(
$stmt
);
if
(
!
$result
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
if
(
!
oci_fetch_row
(
$stmt
))
{
//user does not exists let's create it :)
//password must start with alphabetic character in oracle
$query
=
'CREATE USER '
.
$name
.
' IDENTIFIED BY "'
.
$password
.
'" DEFAULT TABLESPACE '
.
$tablespace
;
//TODO set default tablespace
$stmt
=
oci_parse
(
$connection
,
$query
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
//oci_bind_by_name($stmt, ':un', $name);
$result
=
oci_execute
(
$stmt
);
if
(
!
$result
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
', name:'
.
$name
.
', password:'
.
$password
.
'<br />'
;
echo
(
$entry
);
}
}
else
{
// change password of the existing role
$query
=
"ALTER USER :un IDENTIFIED BY :pw"
;
$stmt
=
oci_parse
(
$connection
,
$query
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
oci_bind_by_name
(
$stmt
,
':un'
,
$name
);
oci_bind_by_name
(
$stmt
,
':pw'
,
$password
);
$result
=
oci_execute
(
$stmt
);
if
(
!
$result
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
}
// grant neccessary roles
$query
=
'GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, UNLIMITED TABLESPACE TO '
.
$name
;
$stmt
=
oci_parse
(
$connection
,
$query
);
if
(
!
$stmt
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
'<br />'
;
echo
(
$entry
);
}
$result
=
oci_execute
(
$stmt
);
if
(
!
$result
)
{
$entry
=
'DB Error: "'
.
oci_error
(
$connection
)
.
'"<br />'
;
$entry
.
=
'Offending command was: '
.
$query
.
', name:'
.
$name
.
', password:'
.
$password
.
'<br />'
;
echo
(
$entry
);
}
}
/**
* create .htaccess files for apache hosts
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment