Как правильно получить доступ к классам из каталогов/подкаталогов?

#php

Вопрос:

Когда я пытаюсь получить доступ includes/config.php изнутри account/index.php Я получаю эти ошибки:

Предупреждение: включите(classes/user.php): не удалось открыть поток: Нет такого файла или каталога в /var/www/htdocs/dashboard/includes/config.php на линии 6

Предупреждение: включить(): Неудачное открытие ‘classes/user.php’ для включения (include_path=’.:/usr/share/php’) в /var/www/htdocs/dashboard/includes/config.php на линии 6

Я правильно определяю путь, но когда index.php доступ к config.php, Я думаю config.php возникает проблема с каталогом при вызове классов в config.php, Я не мог найти, как это решить.

Заранее спасибо.

Вот структура папок

 App/
├─ account/
│  ├─ index.php
├─ classes
├─ includes/
│  ├─ config.php
├─ index.php
 

index.php в account/index.php

 <?php
require('../includes/config.php');
?>
 

config.php в includes/config.php

 <?php
ob_start();
session_start();

//include the user class, pass in the database connection
include('classes/user.php');
include('classes/phpmailer/mail.php');
include('classes/slug.php');
$user = new User($db);
?>
 

Комментарии:

1. Я полагаю, что вам нужно пройти вверх по одному каталогу для вашего includes, т. Е. include('../classes/user.php); и т. Д

2. Но на этот раз index.php в главном корне возникают те же ошибки. Так как же соединить все вместе? @Gowire

Ответ №1:

Как сказал @Sohrab, вам нужно дать ему абсолютный путь. Вы можете решить эту проблему с __DIR__ помощью . (каталог файла), чтобы узнать больше о директории

Вы должны использовать его как:

 require(__DIR__.'/../includes/config.php');
 

также в config.php и другие файлы:

 include(__DIR__.'/../classes/user.php');
include(__DIR__.'/../classes/phpmailer/mail.php');
include(__DIR__.'/../classes/slug.php');
 

Ответ №2:

Файл конфигурации ищет файлы в своем каталоге. Вам следует изменить свой код на:

 <?php
ob_start();
session_start();

//include the user class, pass in the database connection
include('../classes/user.php');
include('../classes/phpmailer/mail.php');
include('../classes/slug.php');
$user = new User($db);
?>
 

Комментарии:

1. Я пробовал это, но index.php в главном корне выдает ту же ошибку, что и account/index.php

2. Если вы хотите получить доступ к какому-либо другому каталогу из main, вы можете указать ему абсолютный путь (который начинается с»/»). Я предлагаю вам узнать об абсолютном и относительном пути.

3. Хорошо, спасибо, я узнаю об абсолютном пути.