Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844

DOCUMENT_ROOT вне директории www

22.12.2012, 02:01. Показов 9376. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл к примеру в директории www:

test.php
PHP
1
2
3
4
5
<?php
include $_SERVER['DOCUMENT_ROOT'].'/system/config.php'
include $_SERVER['DOCUMENT_ROOT'].'/system/config2.php'
include $_SERVER['DOCUMENT_ROOT'].'/system/config3.php'
// тоесть подключаются какие-то там файлы через include и $_SERVER['DOCUMENT_ROOT']


теперь я хочу сделать крон задание и у меня есть к примеру файл:

cron.php
PHP
1
2
<?php
include $_SERVER['DOCUMENT_ROOT'].'/test.php'
его мы к примеру выносим за пределы директории www. Тоесть прямым запуском мы его не можем вызвать.


Теперь такой вопрос, файл cron.php вне директории www попросту не видит $_SERVER['DOCUMENT_ROOT'].
Дальше, переделываю файл нагим образом:

cron.php
PHP
1
2
<?php
include 'home/login/www/test.php'
Окей получаем test.php успешно. Но дальше ловим ошибки $_SERVER['DOCUMENT_ROOT'] во всех файлах где он используется.

Подскажите пожалуйста как можно решить данную проблему ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2012, 02:01
Ответы с готовыми решениями:

Кривое отображение файлов в папке(вне корневой директории)
Приветствую всех!!!Проблема следующая.Файлы находящиеся в корневом каталоге отображаются нормально,а если этот же файл закинуть в папку(то...

Редактирование txt файла вне директории сайта
Доброго времени суток.Требуется помощь. Сайт лежит по пути (./var/www/www-root/data/www/мой сайт/public) Файл для редактирования лежит...

Getenv(DOCUMENT_ROOT)
Подключаю *.php файл в *.php файл. Но в итоге появляется лог с ошибками, Вроде не опознает DOCUMENT_ROOT. Что можно...

6
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.12.2012, 12:01
Цитата Сообщение от nepster Посмотреть сообщение
Теперь такой вопрос, файл cron.php вне директории www попросту не видит $_SERVER['DOCUMENT_ROOT'].
Из крона запуск происходит иначе, чем из-под веб-сервера. Совершенно другое окружение. Нет там никакого веб-сервера, чтобы вообще могло существовать понятие document root. Есть текущая рабочая директория, есть директория файла __DIR__ (или dirname(__FILE__) в версиях 5.2 и ниже).
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
24.12.2012, 13:30  [ТС]
PHP
1
2
3
4
5
6
$contents .= '1'.dirname($_SERVER['SCRIPT_NAME '])."\r\n";
$contents .= '2'.dirname(__FILE__)."\r\n";
$contents .= '3'.substr($_SERVER['SCRIPT_NAME'],0,strpos($_SERVER['SCRIPT_NAME'],'/',1)+1)."\r\n";
$contents .= '4'.basename(dirname(dirname(__FILE__)))."\r\n";
$contents .= '5'.str_replace($DOCUMENT_ROOT, "", dirname($PHP_SELF))."\r\n";
$contents .= '6'.in_dir()."\r\n";
нашел вот такую пачку путей, и получил результат из своей директории:
1
2/home/мой логин/cron
3
4 мой логин
5
6

могу ли я как то получить вот такой путь:
/home/мой логин/www/

при этом не важно в какой я папке нахожусь ?

Добавлено через 16 часов 36 минут
решил вопрос следующим образом.
В файлах, которые в папке www тоесть в корневом каталоге сайта, оставляю
PHP
1
$_SERVER['DOCUMENT_ROOT']
Дальше в крон файле определяю $_SERVER['DOCUMENT_ROOT'] своей функцией.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function DOCUMENT_PART()
{
    if(isset($_SERVER['DOCUMENT_ROOT']))
    {
       return $_SERVER['DOCUMENT_ROOT']; 
    }
    else 
    {
        $part = '/'.trim(dirname(realpath(getcwd())), '/\\');
        return $part.'/www'; 
    }
}
 
$_SERVER['DOCUMENT_ROOT'] = DOCUMENT_PART();

По сути выполняется в крон файле всегда

PHP
1
2
        $part = '/'.trim(dirname(realpath(getcwd())), '/\\');
        return $part.'/www';
и определяет этот адрес во всех ниже-подключенных файлах
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.12.2012, 15:55
Цитата Сообщение от nepster Посмотреть сообщение
могу ли я как то получить вот такой путь: /home/мой логин/www/
при этом не важно в какой я папке нахожусь ?
Запускайте задание с нужной рабочей директорией. Например, так:
Bash
1
cd '/home/мой логин/www/' && php -f '/home/мой логин/cron.php'
И далее:
PHP
1
2
<?php
echo realpath('./');
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
24.12.2012, 15:59  [ТС]
PHP
1
Запускайте задание с нужной рабочей директорией. Например, так:
А как тогда защитить скрипт от прямого вызова?

Переопределение $_SERVER['DOCUMENT_ROOT'] сработало на ура
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.12.2012, 16:00
Цитата Сообщение от nepster Посмотреть сообщение
А как тогда защитить скрипт от прямого вызова?
Кто откуда его напрямую может вызвать, если он лежит вне www/ ?
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
24.12.2012, 17:45  [ТС]
так нет cron вызывается все нормально, имеется ввиду если в кроне подключается файл, который за собой подключает еще файлы, вот там уже проблемы с путями были.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2012, 17:45
Помогаю со студенческими работами здесь

Ссылка на файлы вне папки WWW
Добрый день! Имею сайт (Windows Apache + PHP + MySQL), который лежит в папке D:/WWW Мне иногда нужно делать ссылку на закачку...

Как загрузить файл с сервера из директории, которая выше www?
Здравсвуйте! Помогите новичку: Пожскажите, пожалуйста, как можно загрузить файл НЕ из дирректории с вебсервером. Например у...

Как создавать и удалять файлы и папки в директории /var/www/html/?
совсем новичок в системах linux(ubuntu). не могу создавать файлы и папки в директории /var/www/html/ . получается только через terminal...

Возможно ли держать jsp файлы вне директории Tomcat
Тема Apache+Tomcat уже всем плешь проела, но опять к ней. Связал два сервера используя mod_jk. Прекрасно все работает, но: пользуясь...

Undefined index: DOCUMENT_ROOT
При попытке загрузить файл на свой сайт вылезла такая ошибка Undefined index: DOCUMENT_ROOT путь к обработчику и дальше написано on line...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru