PHP include - не удалось открыть поток: такого файла нет - PullRequest
4 голосов
/ 31 декабря 2011

Я написал веб-сайт на HTML, но затем я хотел, чтобы заголовок и часть панели навигации были в одном файле, поэтому мне просто пришлось изменить его один раз.Я изменил все страницы на .php и добавил php include.Однако теперь я получаю сообщение об ошибке на страницах, которые я поместил в папки, чтобы я мог создавать бесцельные ссылки.

Заголовочный файл: /test/assets/header.php

Работает: /test/index.php содержит <?php include 'assets/header.php'; ?>

Выдает ошибку: /test/company/index.php содержит <?php include '/test/assets/header.php'; ?>

Ошибка:

Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory

Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

У меня проблема со ссылкой на файл заголовка, который находится в папке в корневом каталогепапка.Я считаю, что это простая проблема, просто не зная, как ввести URL.Если я пытаюсь включить полный путь к header.php, я получаю URL file-access is disabled error

Ответы [ 3 ]

12 голосов
/ 31 декабря 2011

Если вы начинаете путь с /, то это абсолютный путь. Абсолютная сеть к фактическому корневому каталогу файловой системы, а не к виртуальной document root. Вот почему это терпит неудачу.

Обычно это означало:

include "$_SERVER[DOCUMENT_ROOT]/test/assets/header.php";
// Note: array key quotes only absent in double quotes context
5 голосов
/ 09 марта 2013

Я также столкнулся с теми же предупреждениями:

Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory
Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

Я решил их следующим решением:

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

define('DOC_ROOT_PATH', $_SERVER['DOCUMENT_ROOT'].'/');
require DOC_ROOT_PATH . "../includes/pagedresults.php";

После этого вы можете использовать любую структуру каталогов.

0 голосов
/ 31 декабря 2011

Это , а не URL;это путь к файлу (хотя вы можете использовать полные URL-адреса, если это позволяет конфигурация сервера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...