Вот путь к файлу с оператором включения:
http://localhost/plugins/index.php
И вот путь к файлу, который я включаю:
http://localhost/header.php
Поэтому, когда я звоню include('/header.php')
Я получил сообщение об ошибке «Не удалось открыть поток». Но когда я использую include('../header.php')
все отлично работает Тем не менее, у меня есть файлы, содержащиеся глубоко с каталогами, и я не хочу указывать относительные пути по одному каталогу за раз. Я уверен, что должен быть способ сократить аргумент включения кроме использования '/'
; Если есть, что это может быть?
include('/header.php')
выглядит в вашей корневой папке (буквально /
на Unix, обычно c:\
в Windows; это абсолютное включение, не относительный.
Лучшим вариантом для обработки вложенности является использование абсолютных включений с использованием имени папки вашего веб-корня (я не знаю вашу платформу или настройку). Если вы не знаете, вы можете выполнить echo dirname(__FILE__)
из header.php, чтобы понять это; обычно /var/www/
на Linux или на Windows, возможно, что-то сумасшедшее, как C:/Program Files/Apache Software Foundation/Apache2.4/htdocs
,
Когда вы знаете, что абсолютное включает в себя как include('/var/www/header.php')
будет работать независимо от того, как ваши файлы вложены.
Надеюсь, это поможет.
$_SERVER['DOCUMENT_ROOT'] can be used more ideally like so:
include $_SERVER['DOCUMENT_ROOT'] . '/header.php';
Это более идеально, чем использование других абсолютных URL, таких как include '/usr/local/apache2/htdocs...
которые привязывают код вашего сайта к конфигурации вашего веб-сервера.
Если вы используете include()
в сценарии файл будет включен. Путь к unix начинается с /
и в окнах это двоеточие.
Также см. Функцию Realpath () который возвращает абсолютный путь.
Или вы можете просто использовать как
include $_SERVER['DOCUMENT_ROOT'] . "/includefolder/thefile.php";