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

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

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

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:

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

2

Решение

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

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

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

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

1

Другие решения

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

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

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

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

1

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

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

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

0
По вопросам рекламы [email protected]