Я пытался сделать простую систему регистрации в php. У меня есть класс с именем Admin (внутри папки контроллера), который расширяет класс DBConnection.php. В классе администратора есть метод регистрации, позволяющий разрешить регистрацию, но возникла проблема. Ошибка происходит в «include_once», а ошибка говорит: «Предупреждение: include_once (../ Database / DBConnection.php): не удалось открыть поток: нет такого файла или каталога в C: \ xampp \ htdocs \ WoodlandsAway \ controller \ Admin.php on строка 15 ——
‘
‘Предупреждение: include_once (): не удалось открыть’ ../Database/DBConnection.php ‘для включения (include_path =’ C: \ xampp \ php \ PEAR ‘) в C: \ xampp \ htdocs \ WoodlandsAway \ controller \ Admin.php на линии 15 ——
‘
«Неустранимая ошибка: класс« DBConnection »не найден в C: \ xampp \ htdocs \ WoodlandsAway \ controller \ Admin.php в строке 17»
вот мой код include_once
include_once ('../Database/DBConnection.php');
—DBConnection.php
class DBConnection {
//put your code here
private $host;
private $user;
private $pass;
private $database;
private $conn;
function DBConnection() {
$this->host = 'localhost';
$this->user = 'root';
$this->pass = '';
$this->database = 'woodlands_away';
}
public function getConnections() {
$this->conn = new mysqli($this->host, $this->user, $this->pass, $this->database) or
die($this->conn->error);
return $this->conn;
}
}
И Admin.php
include_once ('../Database/DBConnection.php');
class Admin extends DBConnection {
public function Admin() {
parent::DBConnection();
}
public function signup($username, $password) {
$sql = "insert into users values(".$username.", ".$password.")";
return $this->getConnections()->query($sql);
}}
Во-первых, я предлагаю вам объявить константу, которая представляет корневой путь вашего проекта. Эта константа должна быть объявлена уникальным способом, например index.php или аналогичным, но в корне вашего проекта:
define('PROJECT_ROOT_PATH', __DIR__);
Тогда ваш вызов include должен выглядеть так:
include_once (PROJECT_ROOT_PATH . '/Database/DBConnection.php');
(Всегда указывайте начальный слеш)
Проблема в том, что в настоящее время ваш код может полагаться на Рабочий каталог так что вы, вероятно, получите неожиданный рабочий каталог.
Других решений пока нет …