Giter VIP home page Giter VIP logo

Comments (8)

givanz avatar givanz commented on June 22, 2024

Your php is missing dom extension, you can enable it from your server cpanel or install it with something like

sudo apt-get install php-dom

from vvveb.

DEV-Devound avatar DEV-Devound commented on June 22, 2024

Your php is missing dom extension, you can enable it from your server cpanel or install it with something like

sudo apt-get install php-dom

php cli.php install module=index host=127.0.0.1 user=root password=1234 database=vvveb admin[[email protected]]=[email protected] admin[1234]=admin engine=mysqli

{
"message": "Connection refused",
"file": "/home/kali/Documents/vvveb/system/db/mysqli.php",
"line_no": 144,
"line": "\t\t\tthrow new \Exception($errorMessage, $e->getCode());\t // <==\n",
"lines": [
"\n",
"\t\ttry {\n",
"\t\t\tself :: $link = new \Mysqli(/*'p:' . */$host, $user, $pass, $dbname, $port);\n",
"\t\t\t//self :: $link = $this;\n",
"\t\t} catch (\mysqli_sql_exception $e) {\n",
"\t\t\t$errorMessage = str_replace($pass,'', $e->getMessage());\n",
"\n",
"\t\t\tthrow new \Exception($errorMessage, $e->getCode());\t // <==\n",
"\t\t}\n",
"\n",
"\t\t// check if a connection established\n",
"\t\tif (\mysqli_connect_errno()) {\n",
"\t\t\t$error = mysqli_connect_error();\n",
"\t\t\t$errorMessage = str_replace($pass,'
', $error);\n"
],
"trace": "#0 /home/kali/Documents/vvveb/system/db.php(37): Vvveb\System\Db\Mysqli->__construct()\n#1 /home/kali/Documents/vvveb/system/sqlp/sqlp.php(50): Vvveb\System\Db::getInstance()\n#2 /home/kali/Documents/vvveb/system/core/startup.php(93): Vvveb\System\Sqlp\Sqlp->__construct()\n#3 /home/kali/Documents/vvveb/system/core/startup.php(180): Vvveb\System\Core\regenerateSQL()\n#4 /home/kali/Documents/vvveb/system/user/admin.php(93): Vvveb\System\Core\autoload()\n#5 /home/kali/Documents/vvveb/install/controller/index.php(256): Vvveb\System\User\Admin::update()\n#6 /home/kali/Documents/vvveb/install/controller/index.php(211): Vvveb\Controller\Index->install()\n#7 [internal function]: Vvveb\Controller\Index->index()\n#8 /home/kali/Documents/vvveb/system/core/frontcontroller.php(229): call_user_func()\n#9 /home/kali/Documents/vvveb/system/core/frontcontroller.php(298): Vvveb\System\Core\FrontController::call()\n#10 /home/kali/Documents/vvveb/system/core/frontcontroller.php(362): Vvveb\System\Core\FrontController::redirect()\n#11 /home/kali/Documents/vvveb/system/core/startup.php(363): Vvveb\System\Core\FrontController::dispatch()\n#12 /home/kali/Documents/vvveb/cli.php(145): Vvveb\System\Core\start()\n#13 {main}",
"code": [
"<?php\n",
"\n",
"/**\n",
" * Vvveb\n",
" *\n",
" * Copyright (C) 2022 Ziadin Givan\n",
" *\n",
" * This program is free software: you can redistribute it and/or modify\n",
" * it under the terms of the GNU Affero General Public License as\n",
" * published by the Free Software Foundation, either version 3 of the\n",
" * License, or (at your option) any later version.\n",
" *\n",
" * This program is distributed in the hope that it will be useful,\n",
" * but WITHOUT ANY WARRANTY; without even the implied warranty of\n",
" * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n",
" * GNU Affero General Public License for more details.\n",
" *\n",
" * You should have received a copy of the GNU Affero General Public License\n",
" * along with this program. If not, see https:\/\/www.gnu.org\/licenses\/.\n",
" \n",
" /\n",
"\n",
"namespace Vvveb\System\Db;\n",
"\n",
"use Vvveb\System\Event;\n",
"\n",
"/
\n",
" Define and use mysqli_result if native is missing\n",
" /\n",
"class mysqli_result {\n",
"\tprivate $stmt;\n",
"\n",
"\tprivate $meta;\n",
"\n",
"\tpublic function __construct($stmt) {\n",
"\t\t$this->stmt = $stmt;\n",
"\t}\n",
"\n",
"\tpublic function fetch_all() {\n",
"\t\treturn $this->fetch_assoc();\n",
"\t}\n",
"\n",
"\tpublic function fetch_array($resulttype) {\n",
"\t\treturn $this->fetch_assoc();\n",
"\t}\n",
"\n",
"\tpublic function fetch_assoc() {\n",
"\t\t//$meta = $this->stmt->store_result();\n",
"\t\t$meta = $this->stmt->result_metadata();\n",
"\t\t$row = [];\n",
"\n",
"\t\twhile ($field = $meta->fetch_field()) {\n",
"\t\t\t$params[] = &$row[$field->name];\n",
"\t\t}\n",
"\n",
"\t\tcall_user_func_array([$this->stmt, 'bind_result'], $params);\n",
"\n",
"\t\twhile ($this->stmt->fetch()) {\n",
"\t\t\t$c = [];\n",
"\n",
"\t\t\tforeach ($row as $key => $val) {\n",
"\t\t\t\t$c[$key] = $val;\n",
"\t\t\t}\n",
"\t\t\t$result[] = $c;\n",
"\t\t}\n",
"\n",
"\t\t//$this->stmt->free_result();\n",
"\t\t//$this->stmt->close();\n",
"\n",
"\t\treturn $result;\n",
"\t}\n",
"\n",
"\tpublic function fetch_field() {\n",
"\t}\n",
"\n",
"\tpublic function fetch_fields() {\n",
"\t}\n",
"\n",
"\tpublic function fetchRow() {\n",
"\t\treturn $this->fetch_assoc();\n",
"\t}\n",
"}\n",
"\n",
"class Mysqli extends DBDriver {\n",
"\tprivate static $link = null;\n",
"\n",
"\t//public $error;\n",
"\n",
"\tprivate $stmt;\n",
"\n",
"\tpublic $affected_rows = 0;\n",
"\n",
"\tpublic $insert_id = null;\n",
"\n",
"\tpublic $quote = '';\n", "\n", "\tpublic $prefix = ''; \/\/'vv_';\n", "\n", "\tpublic static function version() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn mysqli_get_server_version(self :: $link);\n", "\t\t}\n", "\t}\n", "\n", "\tpublic static function info() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn mysqli_get_server_info(self :: $link);\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function error() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link->error;\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function errorCode() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link->errno;\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function get_result($stmt) {\n", "\t\t$result = new mysqli_result($stmt);\n", "\n", "\t\treturn $result;\n", "\t}\n", "\n", "\tpublic function __construct($host = DB_HOST, $dbname = DB_NAME, $user = DB_USER, $pass = DB_PASS, $port = DB_PORT, $prefix = DB_PREFIX) {\n", "\t\t\/\/mysqli_report(MYSQLI_REPORT_OFF);\n", "\t\t\/\/connect to database\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link;\n", "\t\t}\n", "\t\t$this->prefix = $prefix;\n", "\n", "\t\t\\mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);\n", "\n", "\t\ttry {\n", "\t\t\tself :: $link = new \\Mysqli(\/*'p:' . *\/$host, $user, $pass, $dbname, $port);\n", "\t\t\t\/\/self :: $link = $this;\n", "\t\t} catch (\\mysqli_sql_exception $e) {\n", "\t\t\t$errorMessage = str_replace($pass,'*****', $e->getMessage());\n", "\n", "\t\t\tthrow new \\Exception($errorMessage, $e->getCode());\t \/\/ <==\n", "\t\t}\n", "\n", "\t\t\/\/ check if a connection established\n", "\t\tif (\\mysqli_connect_errno()) {\n", "\t\t\t$error = mysqli_connect_error();\n", "\t\t\t$errorMessage = str_replace($pass,'*****', $error);\n", "\n", "\t\t\tthrow new \\Exception($errorMessage, mysqli_connect_errno());\n", "\t\t}\n", "\n", "\t\tif ((! self :: $link instanceof \\MySQLi)) {\n", "\t\t\tthrow new \\Exception('Mysqli not an object', mysqli_connect_errno());\n", "\t\t}\n", "\n", "\t\treturn self :: $link;\n", "\t}\n", "\n", "\t\/*\n", "\t * Get all columns for a table used for sanitizing input\n", "\t *\/\n", "\tfunction getColumnsMeta($tableName) {\n", "\t\t$sql =\n", "\t\t'SELECT COLUMN_NAME as name, COLUMN_DEFAULT as d, IS_NULLABLE as n, DATA_TYPE as t, EXTRA as e\n", "\t\tFROM INFORMATION_SCHEMA.COLUMNS\n", "\t\tWHERETABLE_SCHEMA= \"' . DB_NAME . '\" \n", "\t\t\tAND TABLE_NAME`="' . $tableName . '"';\n",
"\n",
"\t\tif ($result = $this->query($sql)) {\n",
"\t\t\t//$columns = $result->fetch_all(MYSQLI_ASSOC);\n",
"\t\t\t$columns = [];\n",
"\n",
"\t\t\twhile ($row = $result->fetch_assoc()) {\n",
"\t\t\t\t$columns[] = $row;\n",
"\t\t\t}\n",
"\n",
"\t\t\t/
free result set /\n",
"\t\t\t$result->close();\n",
"\n",
"\t\t\treturn $columns;\n",
"\t\t} else {\n",
"\t\t}\n",
"\n",
"\t\treturn false;\n",
"\t}\n",
"\n",
"\tfunction getTableNames($db = DB_NAME) {\n",
"\t\t$sql ="SELECT table_name as name\n",
"\t\t\tFROM information_schema.tables \n",
"\t\t\tWHERE table_schema = '$db' ORDER BY table_name";\n",
"\n",
"\t\tif ($result = $this->query($sql)) {\n",
"\t\t\t//$names = $result->fetch_all(MYSQLI_ASSOC);\n",
"\t\t\t$names = [];\n",
"\n",
"\t\t\twhile ($row = $result->fetch_assoc()) {\n",
"\t\t\t\t$names[] = $row['name'];\n",
"\t\t\t}\n",
"\n",
"\t\t\t/
free result set /\n",
"\t\t\t$result->close();\n",
"\n",
"\t\t\treturn $names;\n",
"\t\t} else {\n",
"\t\t}\n",
"\n",
"\t\treturn false;\n",
"\t}\n",
"\n",
"\tpublic function select_db($db) {\n",
"\t\treturn self :: $link->select_db($db);\n",
"\t}\n",
"\n",
"\tpublic function query($sql) {\n",
"\t\t$result = self :: $link->query($sql);\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\t$this->affected_rows = self :: $link->affected_rows;\n",
"\t\t\t$this->insert_id = self :: $link->insert_id;\n",
"\t\t}\n",
"\n",
"\t\treturn $result;\n",
"\t}\n",
"\n",
"\tpublic function multi_query($sql) {\n",
"\t\t$result = self :: $link->multi_query($sql);\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\t$this->affected_rows = self :: $link->affected_rows;\n",
"\t\t\t$this->insert_id = self :: $link->insert_id;\n",
"\t\t}\n",
"\n",
"\t\treturn $result;\n",
"\t}\n",
"\n",
"\tpublic function escape($string) {\n",
"\t\tif (is_string($string)) {\n",
"\t\t\treturn self :: $link->real_escape_string($string);\n",
"\t\t}\n",
"\n",
"\t\tif (is_null($string)) {\n",
"\t\t\treturn 'null';\n",
"\t\t}\n",
"\n",
"\t\treturn $string;\n",
"\t}\n",
"\n",
"\tpublic function sqlLimit($start, $limit) {\n",
"\t\treturn "LIMIT $start, $limit";\n",
"\t}\n",
"\n",
"\tpublic function fetchArray($stmt) {\n",
"\t\t$result = $stmt->get_result();\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\treturn $result->fetch_array(MYSQLI_ASSOC);\n",
"\t\t}\n",
"\n",
"\t\treturn [];\n",
"\t}\n",
"\n",
"\tpublic function fetchAll($stmt) {\n",
"\t\t$result = $stmt->get_result();\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\treturn $result->fetch_all(MYSQLI_ASSOC);\n",
"\t\t}\n",
"\n",
"\t\treturn [];\n",
"\t}\n",
"\n",
"\tpublic function store_result() {\n",
"\t\treturn self :: $link->store_result();\n",
"\t}\n",
"\n",
"\tpublic function more_results() {\n",
"\t\treturn self :: $link->more_results();\n",
"\t}\n",
"\n",
"\tpublic function next_result() {\n",
"\t\treturn self :: $link->next_result();\n",
"\t}\n",
"\n",
"\tpublic function close() {\n",
"\t\tif ((self :: $link instanceof \MySQLi)/
&& self :: $link->ping()
/) {\n",
"\t\t\treturn self :: $link->close();\n",
"\t\t}\n",
"\t}\n",
"\n",
"\t// Prepare\n",
"\tpublic function execute($sql, $params = [], $paramTypes = []) {\n",
"\t\tlist($sql, $params) = Event::trigger(CLASS,FUNCTION, $sql, $params);\n",
"\t\t//save orig sql for debugging info\n",
"\t\t$origSql = $sql;\n",
"\n",
"\t\tlist($parameters, $types) = $this->paramsToQmark($sql, $params, $paramTypes);\n",
"\n",
"\t\ttry {\n",
"\t\t\t$stmt = self::$link->prepare($sql);\n",
"\t\t} catch (\mysqli_sql_exception $e) {\n",
"\t\t\t$message = $e->getMessage() . "\n" . $this->debugSql($origSql, $params, $paramTypes) . "\n - " . $origSql;\n",
"\n",
"\t\t\tthrow new \Exception($message, $e->getCode());\n",
"\t\t}\n",
"\n",
"\t\tif ($stmt && ! empty($types)) {\n",
"\t\t\tarray_unshift($parameters, $types);\n",
"\n",
"\t\t\t//hack for php 7.x bind_param "expected to be a reference, value given" stupid warning\n",
"\t\t\t$referenceArray = [];\n",
"\n",
"\t\t\tforeach ($parameters as $key => $value) {\n",
"\t\t\t\t$referenceArray[$key] = &$parameters[$key];\n",
"\t\t\t}\n",
"\n",
"\t\t\t@call_user_func_array([$stmt, 'bind_param'], $referenceArray);\n",
"\t\t}\n",
"\n",
"\t\tif (LOG_SQL_QUERIES) {\n",
"\t\t\terror_log($this->debugSql($origSql, $params, $paramTypes));\n",
"\t\t}\n",
"\n",
"\t\tif ($stmt) {\n",
"\t\t\ttry {\n",
"\t\t\t\tif ($stmt->execute()) {\n",
"\t\t\t\t\t$this->affected_rows = self :: $link->affected_rows;\n",
"\t\t\t\t\t$this->insert_id = self :: $link->insert_id;\n",
"\n",
"\t\t\t\t\treturn $stmt;\n",
"\t\t\t\t} else {\n",
"\t\t\t\t\terror_log(print_r($stmt, 1));\n",
"\t\t\t\t\terror_log($this->debugSql($sql, $params, $paramTypes));\n",
"\t\t\t\t}\n",
"\t\t\t} catch (\mysqli_sql_exception $e) {\n",
"\t\t\t\t$message = $e->getMessage() . "\n" . $origSql . "\n" . $this->debugSql($origSql, $params, $paramTypes) . "\n" . print_r($parameters, 1) . $types;\n",
"\n",
"\t\t\t\tthrow new \Exception($message, $e->getCode());\n",
"\t\t\t}\n",
"\t\t} else {\n",
"\t\t\terror_log(print_r($stmt, 1));\n",
"\t\t\terror_log($this->debugSql($origSql, $params, $paramTypes));\n",
"\t\t}\n",
"\n",
"\t\treturn $stmt;\n",
"\t}\n",
"\n",
"\t// Bind\n",
"\tpublic function bind($param, $value, $type = null) {\n",
"\t\t$this->stmt->bindValue($param, $value, $type);\n",
"\t}\n",
"}\n"
]
}

from vvveb.

DEV-Devound avatar DEV-Devound commented on June 22, 2024

how do i solve that?

from vvveb.

givanz avatar givanz commented on June 22, 2024

You need to change mysql user and password to match the ones from your mysql server

php cli.php install module=index host=127.0.0.1 user=root password=your_mysql_password database=your_vvveb_database_name admin[email][email protected] admin[password]=admin engine=mysqli

Or you can simply use SQLite to skip database configuration

php cli.php install module=index admin[email][email protected] admin[password]=admin engine=sqlite

from vvveb.

DEV-Devound avatar DEV-Devound commented on June 22, 2024

{
"message": "Class "SQLite3" not found",
"file": "/home/kali/Documents/vvveb/system/db/sqlite.php",
"line_no": 80,
"line": "\t\t\tself :: $link = new \SQLite3($filename); //, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE);\t // <==\n",
"lines": [
"\n",
"\tpublic function construct($filename = DB_HOST, $dbname = DB_NAME, $user = DB_USER, $pass = DB_PASS, $port = null, $prefix = DB_PREFIX) {\n",
"\t\tif (self :: $link) {\n",
"\t\t\treturn self :: $link;\n",
"\t\t}\n",
"\n",
"\t\ttry {\n",
"\t\t\tself :: $link = new \SQLite3($filename); //, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE);\t // <==\n",
"\t\t} catch (\Exception $e) {\n",
"\t\t\t$errorMessage = str_replace($pass,'***', $e->getMessage());\n",
"\n",
"\t\t\tthrow new \Exception($errorMessage, $e->getCode());\n",
"\t\t}\n",
"\n"
],
"trace": "#0 /home/kali/Documents/vvveb/system/import/sql.php(40): Vvveb\System\Db\Sqlite->__construct()\n#1 /home/kali/Documents/vvveb/install/controller/index.php(154): Vvveb\System\Import\Sql->__construct()\n#2 /home/kali/Documents/vvveb/install/controller/index.php(208): Vvveb\Controller\Index->import()\n#3 [internal function]: Vvveb\Controller\Index->index()\n#4 /home/kali/Documents/vvveb/system/core/frontcontroller.php(229): call_user_func()\n#5 /home/kali/Documents/vvveb/system/core/frontcontroller.php(298): Vvveb\System\Core\FrontController::call()\n#6 /home/kali/Documents/vvveb/system/core/frontcontroller.php(362): Vvveb\System\Core\FrontController::redirect()\n#7 /home/kali/Documents/vvveb/system/core/startup.php(363): Vvveb\System\Core\FrontController::dispatch()\n#8 /home/kali/Documents/vvveb/cli.php(145): Vvveb\System\Core\start()\n#9 {main}",
"code": [
"<?php\n",
"\n",
"/
\n",
" * Vvveb\n",
" *\n",
" * Copyright (C) 2022 Ziadin Givan\n",
" *\n",
" * This program is free software: you can redistribute it and/or modify\n",
" * it under the terms of the GNU Affero General Public License as\n",
" * published by the Free Software Foundation, either version 3 of the\n",
" * License, or (at your option) any later version.\n",
" *\n",
" * This program is distributed in the hope that it will be useful,\n",
" * but WITHOUT ANY WARRANTY; without even the implied warranty of\n",
" * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n",
" * GNU Affero General Public License for more details.\n",
" *\n",
" * You should have received a copy of the GNU Affero General Public License\n",
" * along with this program. If not, see https:\/\/www.gnu.org\/licenses\/.\n",
" *\n",
" */\n",
"\n",
"namespace Vvveb\System\Db;\n",
"\n",
"use Vvveb\System\Event;\n",
"\n",
"class Sqlite extends DBDriver {\n",
"\tprivate static $link = null;\n",
"\n",
"\t//public $error;\n",
"\n",
"\tprivate $stmt;\n",
"\n",
"\tpublic $affected_rows = 0;\n",
"\n",
"\tpublic $num_rows = 0;\n",
"\n",
"\tpublic $insert_id = null;\n",
"\n",
"\tpublic $prefix = ''; //'vv
';\n",
"\n",
"\tpublic $quote = '';\n", "\n", "\tpublic static function version() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn mysqli_get_server_version(self :: $link);\n", "\t\t}\n", "\t}\n", "\n", "\tpublic static function info() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link->version();\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function error() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link->lastErrorMsg() ?? '';\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function errorCode() {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link->lastErrorCode() ?? 0;\n", "\t\t}\n", "\t}\n", "\n", "\tpublic function get_result($stmt) {\n", "\t\treturn $stmt;\n", "\t\t$result = new \\SQLite3Stmt($stmt);\n", "\n", "\t\treturn $result;\n", "\t}\n", "\n", "\tpublic function __construct($filename = DB_HOST, $dbname = DB_NAME, $user = DB_USER, $pass = DB_PASS, $port = null, $prefix = DB_PREFIX) {\n", "\t\tif (self :: $link) {\n", "\t\t\treturn self :: $link;\n", "\t\t}\n", "\n", "\t\ttry {\n", "\t\t\tself :: $link = new \\SQLite3($filename); \/\/, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE);\t \/\/ <==\n", "\t\t} catch (\\Exception $e) {\n", "\t\t\t$errorMessage = str_replace($pass,'*****', $e->getMessage());\n", "\n", "\t\t\tthrow new \\Exception($errorMessage, $e->getCode());\n", "\t\t}\n", "\n", "\t\tself :: $link->enableExceptions(true);\n", "\n", "\t\treturn self :: $link;\n", "\t}\n", "\n", "\t\/*\n", "\t * Get all columns for a table used for sanitizing input\n", "\t *\/\n", "\tfunction getColumnsMeta($tableName) {\n", "\t\t$sql =\n", "\t\t\"SELECT type as t, name, dflt_value as d, notnull` as n FROM pragma_table_info('$tableName');";\n",
"\n",
"\t\tif ($result = $this->query($sql)) {\n",
"\t\t\t//$columns = $result->fetch_all(MYSQLI_ASSOC);\n",
"\t\t\t$columns = [];\n",
"\n",
"\t\t\twhile ($row = $result->fetchArray(SQLITE3_ASSOC)) {\n",
"\t\t\t\t$columns[] = $row;\n",
"\t\t\t}\n",
"\n",
"\t\t\t/* free result set */\n",
"\t\t\t$result->finalize();\n",
"\n",
"\t\t\treturn $columns;\n",
"\t\t} else {\n",
"\t\t}\n",
"\n",
"\t\treturn false;\n",
"\t}\n",
"\n",
"\tfunction getTableNames($db = DB_NAME) {\n",
"\t\t$sql = "SELECT name FROM sqlite_master WHERE type ='table' AND name NOT LIKE 'sqlite
%' AND name NOT LIKE '%_search%' ORDER BY name";\n",
"\n",
"\t\tif ($result = $this->query($sql)) {\n",
"\t\t\t//$columns = $result->fetch_all(MYSQLI_ASSOC);\n",
"\t\t\t$names = [];\n",
"\n",
"\t\t\twhile ($row = $result->fetchArray(SQLITE3_ASSOC)) {\n",
"\t\t\t\t//$names[] = $row;\n",
"\t\t\t\t$names[] = $row['name'];\n",
"\t\t\t}\n",
"\n",
"\t\t\t/* free result set /\n",
"\t\t\t$result->finalize();\n",
"\n",
"\t\t\treturn $names;\n",
"\t\t} else {\n",
"\t\t}\n",
"\n",
"\t\treturn false;\n",
"\t}\n",
"\n",
"\tpublic function escape($string) {\n",
"\t\tif (is_string($string)) {\n",
"\t\t\treturn self :: $link->escapeString($string);\n",
"\t\t}\n",
"\n",
"\t\tif (is_null($string)) {\n",
"\t\t\treturn 'null';\n",
"\t\t}\n",
"\n",
"\t\treturn $string;\n",
"\t}\n",
"\n",
"\tpublic function sqlLimit($start, $limit) {\n",
"\t\treturn "LIMIT $start, $limit";\n",
"\t}\n",
"\n",
"\tpublic function fetchOne($result) {\n",
"\t\t$return = false;\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\t$return = $result->fetchArray(SQLITE3_NUM)[0] ?? null;\n",
"\t\t}\n",
"\n",
"\t\treturn $return;\n",
"\t}\n",
"\n",
"\tpublic function fetchArray($result) {\n",
"\t\t$return = false;\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\t$return = $result->fetchArray(SQLITE3_ASSOC);\n",
"\t\t}\n",
"\n",
"\t\treturn $return;\n",
"\t}\n",
"\n",
"\tpublic function fetchAll($result) {\n",
"\t\t$return = [];\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\twhile ($row = $result->fetchArray(SQLITE3_ASSOC)) {\n",
"\t\t\t\t$return[] = $row;\n",
"\t\t\t}\n",
"\t\t}\n",
"\n",
"\t\treturn $return;\n",
"\t}\n",
"\n",
"\tpublic function query($sql) {\n",
"\t\t$result = false;\n",
"\n",
"\t\ttry {\n",
"\t\t\t$result = self :: $link->query($sql);\n",
"\n",
"\t\t\tif ($result) {\n",
"\t\t\t\t$this->affected_rows = self :: $link->changes();\n",
"\t\t\t\t$this->insert_id = self :: $link->lastInsertRowID();\n",
"\t\t\t\t$this->num_rows = $result->numColumns() && $result->columnType(0) != SQLITE3_NULL;\n",
"\t\t\t//$result->finalize();\n",
"\t\t\t} else {\n",
"\t\t\t\tthrow new \Exception($this->error(), $this->errorCode());\n",
"\t\t\t}\n",
"\t\t} catch (\Exception $e) {\n",
"\t\t\t$message = $e->getMessage() . "\n$sql\n";\n",
"\n",
"\t\t\tthrow new \Exception($message, $e->getCode());\n",
"\t\t}\n",
"\n",
"\t\treturn $result;\n",
"\t}\n",
"\n",
"\tpublic function multi_query($sql) {\n",
"\t\t$result = self :: $link->query($sql);\n",
"\n",
"\t\tif ($result) {\n",
"\t\t\t$this->affected_rows = self :: $link->changes();\n",
"\t\t\t$this->insert_id = self :: $link->lastInsertRowID();\n",
"\t\t\t$this->num_rows = $result->numColumns() && $result->columnType(0) != SQLITE3_NULL;\n",
"\t\t}\n",
"\n",
"\t\treturn $result;\n",
"\t}\n",
"\n",
"\tpublic function close() {\n",
"\t\treturn self :: $link->close();\n",
"\t}\n",
"\n",
"\t// Prepare\n",
"\tpublic function execute($sql, $params = [], $paramTypes = []) {\n",
"\t\tlist($sql, $params) = Event::trigger(CLASS,FUNCTION, $sql, $params);\n",
"\t\t//save orig sql for debugging info\n",
"\t\t$origSql = $sql;\n",
"\n",
"\t\tlist($parameters, $types) = $this->paramsToQmark($sql, $params, $paramTypes);\n",
"\n",
"\t\ttry {\n",
"\t\t\t$stmt = self::$link->prepare($sql);\n",
"\t\t} catch (\Exception $e) {\n",
"\t\t\t$message = $e->getMessage() . "\n" . $this->debugSql($origSql, $params, $paramTypes) . "\n - " . $origSql;\n",
"\n",
"\t\t\tthrow new \Exception($message, $e->getCode());\n",
"\t\t}\n",
"\t\tif ($stmt/
&& ! empty($paramTypes)*/) {\n",
"\t\t\tforeach ($parameters as $key => $value) {\n",
"\t\t\t\t$type = $types[$key] ?? 's';\n",
"\t\t\t\t$type = ($type == 'i') ? SQLITE3_INTEGER : SQLITE3_TEXT;\n",
"\t\t\t\t$index = (int)$key + 1;\n",
"\t\t\t\t$stmt->bindValue($index, $value, $type);\n",
"\t\t\t}\n",
"\t\t} else {\n",
"\t\t\tif (DEBUG) {\n",
"\t\t\t\terror_log((self :: $link->lastErrorMsg ?? '') . ' ' . $this->debugSql($origSql, $params, $paramTypes));\n",
"\t\t\t}\n",
"\t\t}\n",
"\n",
"\t\tif (LOG_SQL_QUERIES) {\n",
"\t\t\terror_log($this->debugSql($origSql, $params, $paramTypes));\n",
"\t\t}\n",
"\n",
"\t\tif ($stmt) {\n",
"\t\t\ttry {\n",
"\t\t\t\tif ($result = $stmt->execute()) {\n",
"\t\t\t\t\t$this->affected_rows = self :: $link->changes();\n",
"\t\t\t\t\t$this->insert_id = self :: $link->lastInsertRowID();\n",
"\t\t\t\t\t$this->num_rows = $result->numColumns() && $result->columnType(0) != SQLITE3_NULL;\n",
"\n",
"\t\t\t\t\treturn $result;\n",
"\t\t\t\t} else {\n",
"\t\t\t\t\terror_log(print_r($result, 1));\n",
"\t\t\t\t\terror_log($this->debugSql($sql, $params, $paramTypes));\n",
"\t\t\t\t}\n",
"\t\t\t} catch (\Exception $e) {\n",
"\t\t\t\t$message = $e->getMessage() . "\n" . $origSql . "\n" . $this->debugSql($origSql, $params, $paramTypes) . "\n" . print_r($parameters, 1) . $types;\n",
"\n",
"\t\t\t\tthrow new \Exception($message, $e->getCode());\n",
"\t\t\t}\n",
"\t\t} else {\n",
"\t\t\terror_log(print_r($stmt, 1));\n",
"\t\t\terror_log($this->debugSql($origSql, $params, $paramTypes));\n",
"\t\t}\n",
"\n",
"\t\treturn $stmt;\n",
"\t}\n",
"\n",
"\t// Bind\n",
"\tpublic function bind($param, $value, $type = null) {\n",
"\t\t$this->stmt->bindValue($param, $value, $type);\n",
"\t}\n",
"}\n"
]
}
but i have SQLITE3 installed

from vvveb.

givanz avatar givanz commented on June 22, 2024

Check your php.ini, probably the sqlite3 extension is not enabled.

https://www.php.net/manual/en/sqlite3.installation.php

Windows users must enable php_sqlite3.dll in order to use this extension. This DLL is included with Windows distributions of PHP.

from vvveb.

DEV-Devound avatar DEV-Devound commented on June 22, 2024

im on linux, also which php.ini? because this repo has a php.ini

from vvveb.

givanz avatar givanz commented on June 22, 2024

If you are on linux then you can try to install the extension

sudo apt-get install php-sqlite3

The included php.ini has some recommended defaults and is used to increase some limits when using docker.

You can check the path of php.ini that is loaded by php with

php -i | fgrep php.ini

Or open a simple php file with

<?php
phpinfo();

from vvveb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.