Так вот, я впервые создаю тестовый сайт с 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');