Я хочу переключиться на новый хост, и они предоставляют этот небольшой небольшой «временный url» для проверки ваших файлов перед тем, как вы переключаетесь. Все прекрасное и денди. Поэтому я копирую все свои файлы. В верхней части каждой страницы мне require
другой файл с сервера, который хранится в public_html/includes/head.php
. Теперь по какой-либо причине параметр $ _SERVER ['document_root'] var возвращает /public_html/htdocs/includes/head.php (который не существует на сервере), а не /public_html/includes/head.php (который существует) , Полученная ошибка выглядит следующим образом:
Warning: require_once(/home/secure31/public_html/htdocs/includes/head.php) [function.require-once]: failed to open stream: Permission denied in /home/stephe80/public_html/index.php on line 6
Код вины:
require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/head.php');
Я склонен думать, что это ошибка, связанная с их временной настройкой url, но я не хочу передавать ее через свой DNS и обнаруживать, что все мои файлы повреждены. Я мог бы изменить их на абсолютные пути, но мне любопытно, не хватает ли я чего-то. Любое понимание было бы оценено. Благодаря!
Я бы предложил использовать константу __FILE__
и оттуда отработать вашу папку htdocs. Это намного надежнее, чем полагаться на супергелбал $ _SERVER, поскольку на самом деле он отличается от сервера к серверу.
Пример (который вы вызываете в index.php в корневой папке):
$htdocs = str_replace(basename(__FILE__), __FILE__, ''); define('ROOT_FOLDER', $htdocs); require_once(ROOT_FOLDER . '/includes/head.php');
Для справок в будущем (если у кого-то есть подобные проблемы), выясняется, что проблема связана с их тестовым сервером. Я запустил его с моим кодом как был (рискованно, я знаю), и все получилось хорошо.