Проблемы с относительным / абсолютным путем

Я искал способы сделать это так, чтобы это работало, но ни один из них, казалось, не работал для всех путей, поэтому мне было интересно, не могли бы вы дать мне направление, как это сделать:

Это структура:

Home Directoy
   config.php
   index.php
   includes/
      user_login.php
      applicant_track.php
   ucp/
      index.php

Когда я пытаюсь включить include /user_login.php в ucp/index.php, он не позволяет мне и говорит, что не может найти файл, мой код находится в ucp/index.php:

if(!defined('root_path'))
{
    define('root_path', realpath(dirname(__FILE__)));
}

include(root_path . '\config.php');

switch($_GET["a"])
{
    case null: include(root_path . '\index.php'); break;
    case "login": include(root_path . '\includes\user_login.php'); break;
}

Вот что я получаю:

Warning: include(E:\xampp\htdocs\aod_panel\ucp\config.php): failed to open stream:

Буду рад совету, как это исправить.

3 ответа

Решение

Используйте следующий путь

define('root_path', realpath(dirname(dirname(__FILE__))));

вместо вашего кода для определения реального пути. Поскольку ваша структура папок такая.

Смотрите, ваш index.php находится в ucp папку, но вы хотите путь к config.php. Итак, вернитесь в один каталог и получите путь к config.php.

Ваш корневой путь не указывает на фактический корень вашего проекта. Ваш фактический корень - это someLocation/yourProject.

корень, который вы определили, это someLocation / yourProject / includes /

Затем вы хотите включить файл в другую папку. Следовательно, он не может его найти. Определите корень вашего пути к реальному корню проекта, а не внутри каталога включений.

Для этого вы можете определить корневой путь в вашем конфигурационном файле и прочитать его оттуда.

Скорее всего, один из ваших других сценариев включает в себя config.php без правильного пути. Настройте ваши пути включения, используя следующий код

  set_include_path(get_include_path() . PATH_SEPARATOR . $root_path);

Также измените включение на require_once, чтобы предотвратить несколько включений.

Другие вопросы по тегам