Include (‘/ header.php’) возвращает ошибку «не удалось открыть поток»

Вот путь к файлу с оператором включения:

http://localhost/plugins/index.php

И вот путь к файлу, который я включаю:

http://localhost/header.php

Поэтому, когда я звоню include('/header.php') Я получил сообщение об ошибке «Не удалось открыть поток». Но когда я использую include('../header.php') все отлично работает Тем не менее, у меня есть файлы, содержащиеся глубоко с каталогами, и я не хочу указывать относительные пути по одному каталогу за раз. Я уверен, что должен быть способ сократить аргумент включения кроме использования '/'; Если есть, что это может быть?

0

Решение

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') будет работать независимо от того, как ваши файлы вложены.

Надеюсь, это поможет.

1

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

$_SERVER['DOCUMENT_ROOT'] can be used more ideally like so:

include $_SERVER['DOCUMENT_ROOT'] . '/header.php';

Это более идеально, чем использование других абсолютных URL, таких как include '/usr/local/apache2/htdocs... которые привязывают код вашего сайта к конфигурации вашего веб-сервера.

1

Если вы используете include() в сценарии файл будет включен. Путь к unix начинается с /
и в окнах это двоеточие.

Также см. Функцию Realpath () который возвращает абсолютный путь.

Или вы можете просто использовать как

include $_SERVER['DOCUMENT_ROOT'] . "/includefolder/thefile.php";
1
По вопросам рекламы [email protected]