@pavlikmd

Почему не работает соединение с БД?

Добрый день, ситуация следующая сделал на бегете проект все ок все работает. Перенес клиенту на немецких хостинг и получил ошибку.

Fatal error: Uncaught Exception: SafeMySQL: 2002 No such file or directory in /homepages/24/d708062168/htdocs/shop.dkconcept.de/vendor/colshrapnel/safemysql/safemysql.class.php:623 Stack trace: #0 /homepages/24/d708062168/htdocs/shop.dkconcept.de/vendor/colshrapnel/safemysql/safemysql.class.php(121): SafeMySQL->error('SafeMySQL: 2002...') #1 /homepages/24/d708062168/htdocs/shop.dkconcept.de/component/Db.php(16): SafeMySQL->__construct(Array) #2 /homepages/24/d708062168/htdocs/shop.dkconcept.de/client/index.php(13): Db::connectDB() #3 {main} thrown in /homepages/24/d708062168/htdocs/shop.dkconcept.de/vendor/colshrapnel/safemysql/safemysql.class.php on line 623


Сам код страницы такой:

<?php
// стартуем сессию
session_start();

// Вывод ошибок
//ini_set('display_errors',1);
//error_reporting(E_ALL);

// подключаем композер
require_once __DIR__ . "/../vendor/autoload.php";
require_once __DIR__ . "/../component/Db.php";

$db = Db::connectDB();

// если юзер нажал кнопку выйти
if(isset($_GET['exit'])) {
	$_SESSION = array();
	session_destroy();
	exit("<html><head><meta http-equiv='Refresh' content='0; URL=/client/'></head></html>");
	//header( 'Location: ./login.php', true, 303 );
}

// ловим экшены входа и регистрации
if(isset($_POST['act'])) {
	$act = $_POST['act'];
	if ($act == "login_user") {
		$login = $_POST['login'];
		$password = $_POST['password'];
		$sql = $db->getRow("SELECT * FROM `dk_users` WHERE login= ?s and password= ?s and user_type = 'users'", $login, $password);
		if($sql['view'] == "hidden") {
			exit("<html><head><meta http-equiv='Refresh' content='0; URL=/client/login.php?status=error_users'></head></html>");
        }
		if(!empty($sql)) {
			$id = $sql['id'];
			$_SESSION['id'] = $id;
			$_SESSION['login'] = $login;
			exit("<html><head><meta http-equiv='Refresh' content='0; URL=/client/'></head></html>");
        } else {
			exit("<html><head><meta http-equiv='Refresh' content='0; URL=/client/login.php?status=error'></head></html>");
        }
	} elseif ($act == "register_user") {
		echo "register";
	}
}

if (isset($_SESSION['login']) and $_SESSION['id'] == true) {
    include "components/titles.php";
	include "include/header-panel.php";
	include "include/preloader.php"; ?>
    <!-- Wrapper Start -->
    <div class="wrapper">
		<?php
		// include header
		include "include/top_header.php";

		// include sidebar
		include "include/sidebar-panel.php";


		// include content
		$page = $_GET['page'];
		if($page == "") {
			include "content/home.php";
		} else {
			require_once "content/" . $page . ".php";
		}
		?>
    </div>
    <!-- End Wrapper -->
	<?php include "include/footer-panel.php";
} else {
	header( 'Location: ./login.php', true, 303 );
}


Если забрать $db = Db::connectDB(); то все работает но тогда не подключится база.

Файл /component/Db.php

require_once __DIR__ . "/../vendor/autoload.php";

use SafeMySQL;

class Db {

	public static function connectDB() {
		$paramPath = __DIR__ . "/../config/db-connect.php";
        $params = include($paramPath);

		$database = $params['db_name'];
		$user = $params['user'];
		$pass = $params['pass'];
		$db = new SafeMySQL(array("user" => "$user", "pass" => "$pass", "db" => "$database", "charset" => "utf8"));
		$db->query("SET SESSION wait_timeout=900");
		return $db;
	}

}


Файл db-config:

return array(
	'host' => 'host',
	'db_name' => 'database name',
	'user' => 'user',
	'pass' => 'pass,
);


понятное дело что там указаны верный данные до бд) я проверял.

Почему такая ошибка ?

p.s. сам файл vendor/colshrapnel/safemysql/safemysql.class.php есть
  • Вопрос задан
  • 590 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
mysqli_connect не может подключиться к БД.
Возможные причины: не установлен php_mysqli, неправильно настроены права, неправильный хост-логин-пароль-порт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы