Создание php включает работу в подкаталоге

Хорошо, я создаю интерфейс администратора для своего пользовательского блога в url / admin.

Возможно ли, чтобы я мог использовать те же самые (включая автозагрузку), как корневой каталог.

Если возможно, я также хотел бы иметь возможность автоматически исправлять ссылки в навигации, чтобы они попадали в index.php в / changes на ../index.php при доступе из / admin.

Спасибо, Нико

Related of "Создание php включает работу в подкаталоге"

Лучшей практикой для этого является определение константы «ABSOLUTE_PATH», которая содержит каталог, в котором находится все. После этого вы можете просто скопировать и вставить все, потому что он определяет путь «полный», который не изменяется из каталога в каталог.

пример

define("ABS_PATH", $_SERVER['DOCUMENT_ROOT']); or define("ABS_PATH", dirname(__FILE__)); // This defines the path as the directory the file is in. 

Затем в любой момент вы можете просто сделать это, чтобы включить файл

 include(ABS_PATH . "/path/to/file"); 

Самый простой способ – использовать абсолютные URL-адреса.

Для URL-адресов определите константу / переменную где-нибудь, которая указывает на корень вашего приложения, например:

 define('ROOT_URL', 'http://www.example.com'); 

или

 $root_url = 'http://www.example.com'; 

И используйте его в каждой ссылке, например:

 <a href="{$root_url}/my-page.php">blah</a> 

Таким образом, всегда в порядке (и в день, когда вы устанавливаете проект на другом сервере или в подкаталоге, у вас есть только одна константа / переменная для изменения, и все еще работает)

Для include / требуется всегда использовать абсолютные шаблоны; одним из решений является использование dirname , например:

 include dirname(__FILE__) . '/my_file.php'; include dirname(__FILE__) . '/../my-other-file.php'; 

__FILE__ – текущий файл, в котором вы пишете эту строку; dirname получает путь (полный путь) к каталогу, содержащему этот файл.

При этом вам никогда не придется беспокоиться об относительных путях ваших файлов.

Еще один ответ будет аналогичен сочетанию первых двух предложений. Вы можете определить константу:

 define('ABSPATH', dirname(__FILE__).'/'); 

Затем, предполагая, что config.php необходимо включить во многие файлы сайта, вы можете использовать следующий оператор:

 include(ABSPATH.'config.php'); 

Надеюсь это поможет.

Другой вариант, который я использовал для functions.php в прошлом, – это автозагрузчик классов.

 //Class Autoloader spl_autoload_register(function ($className) { $className = strtolower($className); $path = "includes/{$className}.php"; if (file_exists($path)) { require_once($path); } else { die("The file {$className}.php could not be found."); } }); 

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