Страница PHP не получает корневой каталог

0

У меня есть страница, которая находится в/ограниченном каталоге на моем сервере. У меня есть файлы в каталоге /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, даже когда я добавляю "/" перед включением.)

Любая помощь высоко ценится!

Заранее спасибо.

  • 0
    Я просто догадываюсь, так как я не знаю вашу файловую структуру, но вы, вероятно, ищете ../includes/analyticstracking.php
  • 0
    Можете ли вы показать нам свою файловую структуру? это проблема, которую я вижу
Теги:

3 ответа

0
Лучший ответ

Если я правильно понял, у вас есть такие папки:

/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")

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

  • 0
    Это сработало. Мог бы поклясться, что я пробовал это, по-видимому, нет. Я также добавил 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 который работал так же хорошо.
1

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, чтобы получить свой корневой каталог, а затем добавить его к каталогу, который вы хотите.

  • 0
    Ударь меня к этому. Так что я просто проголосую за тебя. Может также помочь иметь: define('INCLUDES_DIR',__DIR__.'/includes'); (что в основном сценарии) Затем в любом месте сценария или включений, даже вложенных в 5 уровней, включаются включаемые файлы: <?php include(INCLUDES_DIR.'/public_head.php'); ?> или <?php include_once(INCLUDES_DIR.'/analyticstracking.php'); ?> т. д.
0

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

вместо:

<?php include('includes/public_header.php'); ?>

Вы будете использовать:

<?php include('../includes/public_header.php'); ?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню