У меня есть страница, которая находится в/ограниченном каталоге на моем сервере. У меня есть файлы в каталоге /include. К ним относятся файлы, содержащие стиль, заголовок, навигатор, нижний колонтитул и т.д. Моя проблема заключается в том, что я не могу найти ее, чтобы найти файлы с включенной/закрытой страницей. Ниже приведен код моего кода, который находится в каталоге /limited.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>PRS Network</title>
<?php include('includes/public_head.php'); ?>
<!-- Google Analytics Code Goes Below Here -->
<!-- End Google Analytics Code -->
</head>
<body> <?php include_once("includes/analyticstracking.php") ?>
<div id="outter">
<div id="wrapper">
<?php include('includes/public_header.php'); ?>
<?php include('includes/main_nav.php'); ?>
<hr noshade width="97%">
<?php include('includes/social.php'); ?>
Я попытался разместить "/" перед включенными, и он все равно не найдет файл include. Когда я пытаюсь загрузить страницу в браузере, это то, что я получаю:
Warning: include(includes/public_head.php) [function.include]: failed to open stream: No such file or directory in .../html/restricted/videoarchive.php on line 12
Warning: include() [function.include]: Failed opening 'includes/public_head.php' for inclusion (include_path='.:/usr/local/php5/lib/php') in .../html/restricted/videoarchive.php on line 12
Warning: include_once(includes/analyticstracking.php) [function.include-once]: failed to open stream: No such file or directory in .../html/restricted/videoarchive.php on line 20
Warning: include_once() [function.include]: Failed opening 'includes/analyticstracking.php' for inclusion (include_path='.:/usr/local/php5/lib/php') in .../html/restricted/videoarchive.php on line 20
Warning: include(includes/public_header.php) [function.include]: failed to open stream: No such file or directory in .../html/restricted/videoarchive.php on line 24
Warning: include() [function.include]: Failed opening 'includes/public_header.php' for inclusion (include_path='.:/usr/local/php5/lib/php') in .../html/restricted/videoarchive.php on line 24
Warning: include(includes/main_nav.php) [function.include]: failed to open stream: No such file or directory in .../html/restricted/videoarchive.php on line 26
Warning: include() [function.include]: Failed opening 'includes/main_nav.php' for inclusion (include_path='.:/usr/local/php5/lib/php') in .../html/restricted/videoarchive.php on line 26
Warning: include(includes/social.php) [function.include]: failed to open stream: No such file or directory in .../html/restricted/videoarchive.php on line 30
(Примечание: я удалил некоторый текст в ошибке, которую я получаю в браузере. Но похоже, что он всегда смотрит в каталог /limited, даже когда я добавляю "/" перед включением.)
Любая помощь высоко ценится!
Заранее спасибо.
Если я правильно понял, у вас есть такие папки:
/path/to/website/
/path/to/website/restricted/
/path/to/website/includes/
Когда вы используете это в restricted
папке:
include_once("includes/analyticstracking.php")
Он ищет:
/path/to/website/restricted/includes/analyticstracking.php
Если вы добавите /
, он ищет:
/includes/analyticstracking.php
Ни один из них не существует. Вам нужно пройти по одному прямо с записью папки ..
:
include_once("../includes/analyticstracking.php")
Или, наоборот, полностью квалифицировать путь:
include_once("/path/to/website/includes/analyticstracking.php")
В любом случае вам нужно ссылаться на файл относительно текущего рабочего каталога скрипта или абсолютно из корня файловой системы.
code
<? Php $ site_root = $ _SERVER ['DOCUMENT_ROOT']; ?> <! DOCTYPE HTML> <html> <head> <meta http-equ = "Content-Type" content = "text / html; charset = utf-8" /> <meta name = "viewport" content = "width = device-width, initial-scale = 1.0 "/> <title> PRS Network </ title> <? php include ($ site_root. '/includes/public_head.php'); ?> code
который работал так же хорошо.
if/limited и /includes находятся на одном уровне (тот же каталог), тогда все, что вам нужно сделать, это (когда вы находитесь внутри/ограничено)
вызовите константу php константу DIR, а затем оберните ее в dirname (DIR), чтобы вы могли получить ABSOLUTE PATH.
<?php include_once dirname(__DIR__).'/includes/blah/blah/blah.php';
То, что вы действительно делаете, это определить константу, такую как:
<?php
define('ROOT_DIR', __DIR__);
сохраните его в файле (CONSTANTS.php) в ROOT вашего каталога. затем включите его во все файлы, поэтому вне зависимости от того, где вы находитесь/в каком каталоге вы находитесь, вы всегда можете вызвать ROOT_DIR, чтобы получить свой корневой каталог, а затем добавить его к каталогу, который вы хотите.
define('INCLUDES_DIR',__DIR__.'/includes');
(что в основном сценарии) Затем в любом месте сценария или включений, даже вложенных в 5 уровней, включаются включаемые файлы: <?php include(INCLUDES_DIR.'/public_head.php'); ?>
или <?php include_once(INCLUDES_DIR.'/analyticstracking.php'); ?>
т. д.
Предполагая, что они включены и ограничены на одном уровне каталогов, вам нужно указать один каталог, чтобы найти их:
вместо:
<?php include('includes/public_header.php'); ?>
Вы будете использовать:
<?php include('../includes/public_header.php'); ?>
../includes/analyticstracking.php