require_once не работает, когда файл находится относительно корня, но работает относительно текущего местоположения

Это работает: require_once '../../include/common.php'
Но это не работает: require_once '/include/common.php'
Но это работает: <a href = '/include/common.php'>

Я получаю эту ошибку:
Предупреждение: require_once(/include/common.php): не удалось открыть поток: Нет такого файла или каталога в C://C:\wamp64\www\src\views\search.php

Если это работает как ссылка, то почему не работает для require_once?

Спасибо за вашу помощь :)


person Hannah    schedule 18.04.2018    source источник
comment
Есть ли errors.   -  person deEr.    schedule 18.04.2018
comment
см. этот ответ: stackoverflow.com /вопросы/5371828/   -  person mayank jain    schedule 18.04.2018
comment
Да, извините, я забыл включить это! Предупреждение: require_once(/include/common.php): не удалось открыть поток: нет такого файла или каталога   -  person Hannah    schedule 18.04.2018


Ответы (3)


Использование относительных путей в require_once обычно считается плохой практикой, приводящей к ситуациям, подверженным ошибкам.

Лучшее решение — правильно установить include_path в файле php.ini.

Или вы можете использовать что-то вроде этого:

require_once dirname(__FILE__) . "/../../yourscript.php";

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

person Maertien    schedule 18.04.2018
comment
Вы также можете использовать require_once(__DIR__."/../../yourscript.php"); для более поздних версий PHP. - person Adam J; 18.04.2018

Если у вас возникли проблемы с require_once, всегда используйте абсолютный путь (файловую систему), например:

require_once '/folder1/folder2/folder3/file.php'

В вашем случае require_once '/include/common.php' не "относительно корня". Это абсолютный путь к файловой системе, которого не существует.

Попробуй и print_r(__DIR__); в папку где хочешь включить файл и увидишь абсолютный путь к файловой системе.

Следующий <a href = '/include/common.php'> работает, потому что он связан с доменным именем.

Чтение этого может помочь вам понять разницу между путь к файловой системе и >путь веб-сервера.

person Binar Web    schedule 18.04.2018

require_once '/include/common.php'

а также

<a href = '/include/common.php'>

они не указали на один и тот же файл. В первом случае вы включите common.php в /include в корне системного файла. Во втором случае вы включите common.php в /include в корне VHost.

Вот почему ../../include/common.php отличаются от /include/common.php

person Vincent Faliès    schedule 18.04.2018