2013-06-21 1 views
1

Я создаю файл .php, который будет загружен в корневую директорию сервера. Мне нужен этот .php-файл, чтобы выяснить путь к папке public_html или он эквивалентен.Найти путь к файлу public_html или его эквивалент с помощью PHP

Мне нужно сделать это, потому что я хочу, чтобы мой .php-файл мог быть загружен в корень и использоваться на любой учетной записи хостинга. Поскольку многие хостинговые компании используют разные пути к файлу public_html или даже называют это чем-то другим, я пытаюсь выяснить, как его обнаружить.

Предпочтительный вариант - это переменная сервера или простой тест для этого. Если нет, папка public_html всегда будет содержать определенный файл, поэтому, возможно, я мог бы найти этот конкретный файл и получить путь таким образом. Я просто беспокоюсь о том, что поиск по имени файла тяжел в памяти.

Файл .php, который выполняется, находится внутри каталога ROOT и должен найти папку public_html.

Как это: /home/user/file.php

потребности обнаружить

/Главная/пользователь/public_html/ или /Главная/пользователь/вар/WWW/ или /home/user/website.com/html/ т.д.

+0

Я рекомендую отслеживать, где находится html-папка. –

ответ

3

проблема с этим состоит в том, что сервер может иметь очень много public_html так вне контекста запроса не существует реальный способ найти о что это такое.

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

<?php 
    if ($_SERVER["REMOTE_ADDR"] == '127.0.0.1'){ 
      echo $_SERVER["DOCUMENT_ROOT"]; 
    } 

Тогда в вашем file.php ваш будет делать что-то вроде

$docRoot = trim(file_get_contents("http://www.mydomain.com/docroot.php")); 

Это делает предположение о том, что сервер может разрешить себе через локальный интерфейс по имени.

+0

Проблема в том, что файл находится в корневом каталоге, но ему необходимо обнаружить папку public_html. Если бы я использовал '$ _SERVER [" DOCUMENT_ROOT "]' из корневого каталога, разве это не просто дать мне корневую папку? – Winston

+0

$ _SERVER ["DOCUMENT_ROOT"] == путь к файловой системе, когда вы переходите к 'http: // www.mydomain.com /' – Orangepill

+0

. Я думаю, что я получаю то, что вы после этого, основываясь на вышеприведенном комментарии, правда ли, что это не выполняется самим веб-сервером, а скорее как сценарий командной строки или через cron? – Orangepill

0

Я нашел this website, который предоставил мне только хорошее решение я нашел после соскабливать полотна ...

$root = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", "", $_SERVER['SCRIPT_FILENAME']); 

Это работает путем получать полный путь к файлу, а затем удаление относительный путь файла из полного пути.