Intereting Posts

$ _SERVER возвращает / htdocs not / public_html

Я хочу переключиться на новый хост, и они предоставляют этот небольшой небольшой «временный 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 и обнаруживать, что все мои файлы повреждены. Я мог бы изменить их на абсолютные пути, но мне любопытно, не хватает ли я чего-то. Любое понимание было бы оценено. Благодаря!

Solutions Collecting From Web of "$ _SERVER возвращает / htdocs not / public_html"

Я бы предложил использовать константу __FILE__ и оттуда отработать вашу папку htdocs. Это намного надежнее, чем полагаться на супергелбал $ _SERVER, поскольку на самом деле он отличается от сервера к серверу.

Пример (который вы вызываете в index.php в корневой папке):

 $htdocs = str_replace(basename(__FILE__), __FILE__, ''); define('ROOT_FOLDER', $htdocs); require_once(ROOT_FOLDER . '/includes/head.php'); 

Для справок в будущем (если у кого-то есть подобные проблемы), выясняется, что проблема связана с их тестовым сервером. Я запустил его с моим кодом как был (рискованно, я знаю), и все получилось хорошо.