Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Предложение: Добавить переменную среды $HOME (Лев)
Author Message
Лев
Заглянувший



Joined: 19 Oct 2004
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Oct 19, 2004 2:57 pm ()
   Post subject: Предложение: Добавить переменную среды $HOME
Reply with quote

Желательно добавить переменную среды $HOME - она бывает удобна для задания полного имени файл.
Например:

  $filename = "$HOME/www/data/myfile.dat";
  $fd = fopen ($filename, "r");

Такая запись делает возможным переносить скрипт в любую точку сайта.
Понятно, что для каждого виртуального сайта $HOME принимает своё значение.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Tue Oct 19, 2004 4:32 pm (спустя 1 час 34 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

В принципе, это легко сделать, указав директиву SetEnv (или как там ее...) в шаблоне виртуального хоста в httpd.conf.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Tue Oct 19, 2004 8:18 pm (спустя 3 часа 45 минут; написано за 9 секунд)
   Post subject:
Reply with quote

Лев:
А чем Вам не нравится $_SERVER['DOCUMENT_ROOT']?
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed Oct 20, 2004 3:22 pm (спустя 19 часов 4 минуты; написано за 52 секунды)
   Post subject:
Reply with quote

Мдя... много я идей видел на dklab'е, но таких... В общем, предлагаю перенести тему либо в мусорку, либо в "форум для начинающих". Здесь налицо элементарное незнание основ как apache, так и PHP
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 129
   поощрить/наказать


PostPosted: Wed Oct 20, 2004 3:31 pm (спустя 9 минут)
   Post subject:
Reply with quote


М

Ага.

Перенесено из форума: TODO-list :: Денвер.
Перенесено в форум: Мусоропровод.
Back to top
View user's profile Send private message Send e-mail
Лев
Заглянувший



Joined: 19 Oct 2004
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Sun Nov 07, 2004 6:38 pm (спустя 18 дней 3 часа 6 минут)
   Post subject:
Reply with quote

Я не ожидал, что на мою тему кто-либо ответил – писем я не получал (может галочку где-то не проставил) и вообще: “мало ли кто-то что-то предложил – вот будем делать 3-й Денвер, тогда и посмотрим.” Поэтому буду отвечать всем сразу.

Общее:
Если стремиться к тому, чтобы всякий скрипт, работающий под Денвером, эквивалентно работал под unix’ом, то надо реализовывать переменную $HOME. Если исходить из того, что “нельзя объять необъятное” и, что в данном случае “овчинка выделки не стоит”, то не надо.
Мне известны 4 ситуации, когда абсолютная адресация файла является наиболее простым и естественным способом реализации. Причем в одной из них можно использовать только переменную $HOME – это скрипт запускаемый cron’ом (например, анализ логов).

Дмитрию Котерову: наверно правильно, но непонятно.

yUAC: если скрипт запускается cron’ом, то DOCUMENT_ROOT не существует. В других случаях – да это возможно. Хотя session_save_path("$HOME/session1"); мне симпатичнее, чем session_save_path("$DOCUMENT_ROOT/../session1");

Дмитрию Попову: Честно говоря, я был обижен. Я не понимал, за что меня обвинили в невежестве. Судите объективно: разве две строки выдранные (с несущественным изменением) из работающего скрипта, могут служит для это основанием? Даже если они коряво написаны? А apache я вообще трогал. Видимо это что-то личное: имя моё не понравилось, или IP. Я даже хотел написать личное письмо, требуя объяснений. Возможно матерное. И только бессонной ночью меня осенило: Вы просто никогда не писали скриптов, использующих абсолютную адресацию файлов и считаете, что если <IMG SRC="/images/picture1.gif"> работает правильно, то и $fd = fopen ("/images/picture1.gif", "r"); тоже будет работать правильно. Ууу... наивный (не верьте мне – убедитесь сами).
Вас не смутило то, что двое ваших коллег ответило мне по существу? И то, что существует возможность работать с файлами лежащими вне каталога www (например, анализировать error.log)? A если скрипт расположен вне каталога www (как рекомендуют некоторые авторитетные авторы), то он вообще не работает с файлами? А как работает скрипт запускаемый автономно – без apache?
Илья Ильф называл таких невежд, уверенных в своём невежестве, – “непугаными идиотами”.
Ошибиться может каждый, но как модератор, на мой взгляд, Вы сделали ещё две ошибки: 1) не объяснили, что вы считаете неправильным и 2) высказали своё мнение в эмоциональной форме, обидной для адресата.

Ant: Ваше право переносить тему куда угодно, не вникать в смысл прочитанного текста и иметь соответствующую репутацию.
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Sun Nov 07, 2004 8:21 pm (спустя 1 час 43 минуты; написано за 9 минут 55 секунд)
   Post subject:
Reply with quote

Лев wrote:
Вы просто никогда не писали скриптов, использующих абсолютную адресацию файлов
Ага... ни разу в жизни...
Лев wrote:
то и $fd = fopen ("/images/picture1.gif", "r"); тоже будет работать правильно
А что - не будет? *дальше смотрим спектакль, как некто сверхопытный и умный будет объяснять мне, неразумному что такое абсолютные пути*. =)
Лев wrote:
не объяснили, что вы считаете неправильным
Ну так Вы и не спросили. Вы вынесли предложение - сделать переменную $HOME. Любой человек понимающий что такое PHP понимает, почему данное предложение является бредом.
Вот спросили бы "Как узнать полный путь к файлу", например - Вам бы тут же сходу было несколько спобов выдано...
Лев wrote:
Вас не смутило то, что двое ваших коллег ответило мне по существу
Абсолютно.
Лев wrote:
Честно говоря, я был обижен. Я не понимал, за что меня обвинили в невежестве.
За невежество.
Лев wrote:
Судите объективно: разве две строки выдранные (с несущественным изменением) из работающего скрипта, могут служит для это основанием?
Строчки из скрипта - нет. А предложение "Добавить переменную $HOME" - может.
Лев wrote:
Я даже хотел написать личное письмо, требуя объяснений. Возможно матерное.
Так написали бы! Пообщались бы тогда, да...

Теперь вопросы:
Лев wrote:
если скрипт запускается cron’ом, то DOCUMENT_ROOT не существует
Можно вопрос: какая связь между запуском из под крона и Денвером?
Лев wrote:
А как работает скрипт запускаемый автономно – без apache?
А при чем тут Денвер?
Лев wrote:
Мне известны 4 ситуации, когда абсолютная адресация файла является наиболее простым и естественным способом реализации.
Расскажите мне неразумному, а?
Лев wrote:
A если скрипт расположен вне каталога www (
То что?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Mon Nov 08, 2004 12:11 am (спустя 3 часа 50 минут; написано за 57 секунд)
   Post subject:
Reply with quote


!

Дмитрий Попов:
Лев:
Спокойнее, пожадуйста. Правила для всех едины: forum.dklab.ru/about/todo/VozzvanieKPolzovatelyam.html. Завязывайте с переходом на личности.
Back to top
View user's profile Send private message Send e-mail
Лев
Заглянувший



Joined: 19 Oct 2004
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Nov 09, 2004 12:49 pm (спустя 1 день 12 часов 37 минут; написано за 1 минуту 14 секунд)
   Post subject:
Reply with quote

Дмитрий Попов wrote:
А что - не будет? ( о строке $fd = fopen ("/images/picture1.gif", "r"); )
Нет, не будет (в чем я Вам рекомендовал убедиться). Файловое пространство PHP - это обычное unix или windows файловое пространство.
Долее я привел 3 причины, по которым иначе и быть не может:
1 возможность работать с файлами лежащими вне каталога www. Они вне файлового пространства Apache и были бы не доступны.
2 возможность располагать скрипт вне каталога www. При этом скрипт должен иметь возможность работать с файлами.
3 возможность запускать скрипт автономно – например по cron. А отлаживается этот скрипт обычным образом - через браузер. Поэтому желательно, чтобы он работал одинаково в обоих случаях. Так что связь между запуском из под крона и Денвером существует.
Дмитрий Попов wrote:
Вы вынесли предложение - сделать переменную $HOME. Любой человек понимающий что такое PHP понимает, почему данное предложение является бредом.
Объясните - не понимаю. Моё мнение: Если стремиться к тому, чтобы всякий скрипт, работающий под Денвером, эквивалентно работал под unix’ом, то надо реализовывать переменную $HOME.
Заодно объясните и про невежество.
Дмитрий Попов wrote:
Так написали бы! Пообщались бы тогда, да...
Просто в пятницу у меня не было времени. А в субботу расхотелось.
Дмитрий Попов wrote:
какая связь между запуском из под крона и Денвером? (если скрипт запускается автономно) А при чем тут Денвер?
Отлаживается этот скрипт (и очень тщательно) обычным образом - через браузер, например под Денвером
Дмитрий Попов wrote:
Мне известны 4 ситуации, когда абсолютная адресация файла является наиболее простым и естественным способом реализации. Расскажите мне неразумному, а?
Могу говорить только о своём опыте:
1 У нас на сайте имеется библиотека, из соображений безопасности находящяяся вне www. В ней читаются несколько файлов, расположенных там же. Библиотека "инклудится" в несколько разных файлов.
2 Программа анализа логов запускаемых по cron'у
3 Инклуд открытия ссесии со строкой session_save_path("$HOME/session1"); вставляемый в произвольно расположенный скрипт.
4 При обработке mod_rewrite мне нужно было отделить динамические файлы от статических, которые попадали под правило mod_rewrite. Последние я читал, как обычные файлы, и передовал на выход (печатал echo). Но они содержали include virtual на файлы в корне сайта (например - "/count.htm"). Я как бы выполнял эти include virtual. (потом, правда, я перешёл к относительной адресации, потому был волен поменять текст include virtual на статических страницах).
Дмитрий Попов wrote:
A если скрипт расположен вне каталога www То что?
Смотри выше
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Tue Nov 09, 2004 1:14 pm (спустя 25 минут; написано за 6 минут 51 секунду)
   Post subject:
Reply with quote

Лев wrote:
Файловое пространство PHP - это обычное unix или windows файловое пространство.
Слушайте, перестаньте прикидываться идиотом. Вы и вправду считаете что мне это надо объяснять?
Лев wrote:
Долее я привел 3 причины, по которым иначе и быть не может:
Прежде чем прокомментирую эти три причины, задаю Вам решение:
1) Пути вида "../" (относительные).
2) dirname(__FILE__);

А теперь читаем Ваши комментирии:
Лев wrote:
1 возможность работать с файлами лежащими вне каталога www. Они вне файлового пространства Apache и были бы не доступны.
2 возможность располагать скрипт вне каталога www. При этом скрипт должен иметь возможность работать с файлами.
3 возможность запускать скрипт автономно – например по cron. А отлаживается этот скрипт обычным образом - через браузер. Поэтому желательно, чтобы он работал одинаково в обоих случаях.
1) fopen("../")?
2) require("../sript.php");
3) (1)+(2);
Либо, сочетание с __FILE__ (realpath(dirname(__FILE__."../")) тоже прекрасно работает)

Зачем для этого нужна $home?
Лев wrote:
Если стремиться к тому, чтобы всякий скрипт, работающий под Денвером, эквивалентно работал под unix’ом, то надо реализовывать переменную $HOME.
а что Вы будете делать под юниксом, где нету денвера? Что там будет в переменной $home???
Лев wrote:
1 У нас на сайте имеется библиотека, из соображений безопасности находящяяся вне www. В ней читаются несколько файлов, расположенных там же. Библиотека "инклудится" в несколько разных файлов.
В чем проблема?
Лев wrote:
2 Программа анализа логов запускаемых по cron'у
В чем проблема?
Лев wrote:
3 Инклуд открытия ссесии со строкой session_save_path("$HOME/session1"); вставляемый в произвольно расположенный скрипт.
В чем проблема?
Back to top
View user's profile Send private message
Лев
Заглянувший



Joined: 19 Oct 2004
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Wed Nov 10, 2004 12:10 pm (спустя 22 часа 55 минут; написано за 32 секунды)
   Post subject:
Reply with quote

Дмитрий Попов wrote:
а что Вы будете делать под юниксом, где нету денвера? Что там будет в переменной $home???
Под юниксом переменная $HOME есть. Я это знаю для FreeBCD и думаю, что это справедливо для других юниксов, потому что $HOME традиционная переменная для всех юниксов.

Моя позиция очень проста:

1. Есть ситуации, когда использование абсолютной адресации файла является наиболее простым и естественным способом реализации
2. Использование переменной $HOME является наиболее простым и естественным способом реализации абсолютной адресации файлов (покрайней мере для меня).
3. Добавление переменной $HOME облегчит использование абсолютной адресации файла и повысит совместимость с unix.

Я завершаю обсуждение и не буду более ничего писать здесь, чтобы не продолжать диалог слепого с глухим.
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed Nov 10, 2004 3:36 pm (спустя 3 часа 25 минут; написано за 1 минуту 11 секунд)
   Post subject:
Reply with quote

Лев wrote:
повысит совместимость с unix.
И понизит с виндоуз, например.
Лев wrote:
покрайней мере для меня)
Лев wrote:
Есть ситуации, когда использование абсолютной адресации файла является наиболее простым и естественным способом реализации
Особенно когда не имеешь представления о том, как правильно получить абсолютный путь к нужному файлу.

В общем
Back to top
View user's profile Send private message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed Nov 10, 2004 3:36 pm (спустя 14 секунд)
   Post subject:
Reply with quote


М

Тема закрыта.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML