apache — php включает в себя не работает с относительным путем — проблема DocumentRoot? MAMP?

Должно быть что-то, что я пропускаю, но я не могу заставить свои включения работать, как ожидалось, используя относительные пути. В MAMP DocumentRoot настроен в httpd.conf следующим образом:

# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Applications/MAMP/projects/journalproject”

Я поднимаю сайт на HTTP: // локальный: 8888 / и include отлично работают, если я использую путь, подобный этому:

<?php include('nav.php'); ?>

Но, если я положу свой включаемый файл в папку, включение не будет отображаться на странице:

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

Это путь к включаемому файлу: /journalproject/includes/nav.php

Я звоню отсюда: /journalproject/journals/index.php

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

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

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

<a href="/includes/nav.php">Find nav include</a>

Я не уверен, куда идти отсюда. Любая помощь будет принята с благодарностью.

4

Решение

Я полагаю, что приведенное ниже не работает, потому что он рассматривается как абсолютный путь, так как он начинается с «/», который говорит PHP искать из буквального каталога «/» в операционных системах Unix:
<?php include('/includes/nav.php'); ?>

Пытаться:
<?php include('includes/nav.php'); ?>

0

Другие решения

Вы можете указать файлы относительно пути включения, не зная, где находится ваш конкретный файл .php, который вызывает include / require:

http://php.net/manual/en/function.set-include-path.php

set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'])

0

По вопросам рекламы [email protected]