Структура папок PHP XAMPP DOCUMENT_ROOT

Так вот, я впервые создаю тестовый сайт с xampp. Сначала у меня были все мои php-файлы в одной папке и совсем недавно решили организовать данные (да, задним числом я должен был начать с организованной структуры папок.) В любом случае, у меня есть моя настройка:

«[]» подразумевает, что это ПАПКА

Установлен на моем диске C: \

[XAMPP]
– [HTDOCS]
– [QMS]
— [rev3]
—- [CSS]
—- [УД]
—- [ППН]
—-[авторизоваться]
—- index.php
—- header.php
—- config.php

В моем файле config.php я попытался определить корневой путь (это может быть ошибка):

$path = $_SERVER['DOCUMENT_ROOT'] . "/QMS/rev3/"; 

,

Затем в моем файле header.php у меня есть:

 <?php require $_SERVER['DOCUMENT_ROOT'] . "/QMS/rev3/config.php"; include $_SERVER['DOCUMENT_ROOT'] . "/QMS/rev3/login/session.php"; ..... ?> HTML - located in the <head> section <link rel='stylesheet' type='text/css' href='<?php echo $path . "css/searchBar.css"; ?>'/> <link rel='stylesheet' type='text/css' href='<?php echo $path . "css/tables/filtergrid.css"; ?>'/> <script type="text/javascript" language="javascript" src='<?php echo $path . "js/jquery.dataTables.js" ?>'></script> <script type="text/javascript" language="javascript" src='<?php echo $path . "js/jquery.loader.js" ?>'></script> ... MANY OTHER scripts and stylesheets. 

, Мой index.php:

 require $_SERVER['DOCUMENT_ROOT'] . "/QMS/rev3/header.php"; 

Когда я запускаю это в Chrome, я получаю следующие ошибки для ВСЕХ моих скриптов и таблиц стилей (всего 19 ошибок):

 "NOT ALLOWED TO LOAD LOCAL RESOURCE file///C:/xampp/htdocs/QMS/rev3/ ......etc..." 

Мой сайт работал отлично, когда все мои файлы находились в одной папке, и я не использовал SERVER ['DOCUMENT_ROOT'], но теперь я понятия не имею, что делать … любой совет?

,

НЕ ДОПУСКАЕТСЯ ЗАГРУЗИТЬ МЕСТНЫЙ РЕСУРС

URL-адрес, который вы используете в тегах <a> , <link> , <script> и т. Д., Должен относиться к корню document, например:

 <link rel="stylesheet" type="text/css" href="/QMS/rev3/css/searchBar.css" /> 

Не путайте дорожки на диске с url , они две совершенно разные вещи 🙂

Консультирование по определению корневого пути

Я рекомендую не полагаться на переменную $_SERVER['DOCUMENT_ROOT'] , но определить корневую папку, подобную этой (в config.php ):

 define('ROOT_PATH', __DIR__); 

У вас будет константа с именем ROOT_PATH которая будет содержать C:\xampp\htdocs\QMS\rev3 (без трейлинга / ).

Теперь вы можете делать такие вещи, как:

 require ROOT_PATH . '/header.php'; 

Путь в ROOT_PATH отличается от корня document. Если вы действительно хотите использовать document-root, сделайте это (чтобы ROOT_PATH затем содержал C:\xampp\htdocs ):

 define('ROOT_PATH', __DIR__ . '/../..'); # ... require ROOT_PATH . '/QMS/rev3/header.php'; 

Канонизованный абсолютный путь

Было бы разумно использовать realpath() как указано в Capsule (развернуть все символические ссылки и разрешить ссылки на /./ , /../ и extra / characters):

 $rootPath = __DIR__ . '/../..'; # or just __DIR__ $realPath = realpath($rootPath); define('ROOT_PATH', $realPath ?: $rootPath); 

Если realpath() не может разрешить путь, он вернет false , поэтому есть небольшая проверка.

Если, удалив / из этой строки

require $_SERVER['DOCUMENT_ROOT'] . "/QMS/rev3/header.php";

вам удастся включить файл header.php, вам также нужно изменить $path для:

$path = $_SERVER['DOCUMENT_ROOT'] . "QMS/rev3/";

В общем случае, если вы используете config.php для установки вашего $path и вы включаете его на все ваши страницы, как вам следует, используйте переменную $path а не $_SERVER['DOCUMENT_ROOT'] . "QMS/rev3/ $_SERVER['DOCUMENT_ROOT'] . "QMS/rev3/ . Таким образом, вы можете легко использовать свой код.

О НЕ ДОПУСКАЕМОЕ ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ РЕСУРС , взгляните на этот ответ

Не используйте document_root для определения основного пути. Поместите эту строку кода в свой config.php

 $path = rtrim(dirname(__file__),"/")."/"; 

Теперь ваша переменная path имеет ваш корневой путь, включая ведущую косую черту (/). Вы можете использовать это.

Попробуйте «QMS / rev3 / header.php» без «/» в начале

Попробовав множество решений, я сделал это так, потому что он работает локально и онлайн. Вы можете определить переменную с таким путем, как это:

 $path = ""; if ($_SERVER['HTTP_HOST'] == "localhost") { $path = $_SERVER['DOCUMENT_ROOT']."/mysite"; } else { $path = $_SERVER['DOCUMENT_ROOT']; } include_once($path.'/include/config.php');