За последние 24 часа нас посетили 18383 программиста и 1601 робот. Сейчас ищут 1117 программистов ...

Как узнать физический путь к виртуальному каталогу?

Тема в разделе "Прочие вопросы по PHP", создана пользователем ViT, 13 мар 2006.

  1. ViT

    ViT Активный пользователь

    С нами с:
    13 мар 2006
    Сообщения:
    11
    Симпатии:
    0
    Подскажите, как можно узнать, существует ли определённый файл в виртуальном каталоге, или нет? Ведь как я понял функция file_exists() не видит виртуальные каталоги :(
    В ASP есть Server.MapPath() котрорая возвращает полный путь каталога, есть ли что то подобное в PHP?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ViT
    а что в твоем понимании "виртуальный каталог"?
     
  3. evgenyt

    evgenyt Активный пользователь

    С нами с:
    9 мар 2006
    Сообщения:
    53
    Симпатии:
    0
    Адрес:
    Russia, Murmansk
    видимо что то жутко виндовое :D
     
  4. ViT

    ViT Активный пользователь

    С нами с:
    13 мар 2006
    Сообщения:
    11
    Симпатии:
    0
    Виндовое, а что, у вас с этим проблема? :wink:
    Хорошо, пусть это будет не виртуальный каталог как в IIS, а alias, как в Apache 8)
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ViT
    если физиеский путь не известен можно попробовать получить файл по http. тут извратов много.

    а какая задача-то стоит на самом деле?

    file_exists() имеет дело с файловой системой, а "виртуальные каталоги" и "алиасы" - это дело вебсервера.
     
  6. evgenyt

    evgenyt Активный пользователь

    С нами с:
    9 мар 2006
    Сообщения:
    53
    Симпатии:
    0
    Адрес:
    Russia, Murmansk
    А.... я ж просто не понял о чем спросили =)
    Можно некоторую информацию получить из переменных окружения. Кое что apache туда отдает. Для того что бы найти что нибудь полезненькое я обычно делаю так
    Код (Text):
    1. <? phpinfo(); ?>
     
  7. ViT

    ViT Активный пользователь

    С нами с:
    13 мар 2006
    Сообщения:
    11
    Симпатии:
    0
    Да задача то банальная, надо показать картинку (ну и вывести некоторые данные), если она есть в каталоге :?
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ViT
    так а каталог-то как хранится? может все прямо там и хранить? я вот все-таки не пойму при чем тут "алиасы"?
     
  9. ViT

    ViT Активный пользователь

    С нами с:
    13 мар 2006
    Сообщения:
    11
    Симпатии:
    0
    Короче... :)
    Сайт с mp3. Есть много алиасов (допустим "music1", "music2" и т.д.) по которым распаложены сами mp3, физически на разных дисках.
    Вот мне надо узнать, есть ли файл по пути "http://localhost/music1/.../cover.jpg", если есть, то показать его. file_exists() не видит папку "music1" т.к. это алиас :(
     
  10. Бутузов

    Бутузов Активный пользователь

    С нами с:
    5 фев 2006
    Сообщения:
    115
    Симпатии:
    0
    Адрес:
    Київ, Україна
  11. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    Всем привет. Хотелось бы вернуться к данной теме, т.к. есть очень похожая задача.
    Может кто-то нашел решение или за прошедшие 4 года что-нить изменилось и теперь PHP тоже умеет это делать?
    Как вариант, может быть можно как-то из PHP обратиться к функции, написанной на JScript, которая возвращает абсолютный путь к виртуальной папке с помощью Server.MapPath()?

    P.S. Вариант с dirname() не проходит.
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    если правильно понял, то realpath гляньте
     
  13. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    К сожалению использование realpath не помогает. Поясню на примере. К примеру, на Web-сервере есть виртуальный каталог vcat/, который виден как http://sait.ru/vcat. Выполнение в коде
    Код (Text):
    1. realpath("vcat/")
    дает результат
    Код (Text):
    1. "."
    , хотя на самом деле этот локальный каталог имеет физический путь типа D:\catalog1\catalog2[/b]
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    print(realpath(__FILE__))
     
  15. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    Не получится, т.к. скрипт не находится в указанном виртуальном каталоге.
    Виртуальный каталог используется для хранения файлов, с которыми происходит работа.
     
  16. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  17. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    Спасибо за ссылку на подробное объяснение различий между абсолютными и относительными путями. Извините, не понял Вашу мысль. Я, конечно, не гуру, но такие базовые вещи вроде понимаю. Может Вам тоже стоит еще раз перечитать данный материал, освежить так сказать в памяти, а заодно и тему, обсуждаемую в данном посте?
    Если Вы знаете как решить обозначенную проблему или у Вас есть конкретные идеи - с удовольствием готов выслушать и обсудить здесь на форуме, а ссылки на подобные материалы в данной ситуации не помогут.
     
  18. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ну если Вы сможете обосновать необходимость этого для меня, то несомненно освежу.
    Пока Вы меня абсолютно не вдохновляете :D

    Печально если это так. В таком случае, видимо, вам нужен другой раздел - не этот.

    А ведь все просто как 2+2 и гуру тут быть не надо (я вот не гуру, а разобрался)

    это URL.
    это внутренняя настройка сервера
    это реальный путь.

    То что связь между первым и последним имеется в настройках сервера и доступ к нему возможен через его API(если оно есть) это понятно?

    Так что имеется масса вариантов:
    1. Соответственно выбираем текущий наш сервер и курим мануал PHP на предмет наличия соответствующего API, для двух самых распространенных серверов там кое-что есть, правда разной степени свежести. Но если Вас не затрудняет раздавать советы, как именно вам должны отвечать, то как это использовать - разберетесь самостоятельно.

    2. Ну, а вопрос запуска JScript из PHP, я полагаю Вас тоже не затруднит, ибо вещь крайне тривиальная.


    Правда описывается это в ссылках, которые Вам почему-то не помогут :D
    Это конечно досадно. Но я не знаю чем я могу помочь в такой ситуации.
     
  19. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    Тогда может вместо ссылок на описание различий между абсолютными и относительными путями подскажете КАК ИМЕННО ЭТО СДЕЛАТЬ, если это так просто на Ваш взгляд? В мануалах и на форумах я почему-то этого не нашел...
     
  20. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  21. miks69

    miks69 Активный пользователь

    С нами с:
    28 май 2010
    Сообщения:
    6
    Симпатии:
    0
    Послушайте уважаемый! Не стоит думать, что вокруг Вас все сплошные идиоты, не умеющие пользоваться поиском. Короче говоря, если знаете как решить проблему, - напишите.
    Если нет, тогда и нечего тратить свое драгоценное время на постирование ссылок на мануалы и цитирование описание проблемы. Или Вам просто пообщаться не с кем? Кажется я понял, Вы, наверное, таким образом накручиваете свой счетчик кол-ва сообщений на форуме?
     
  22. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вас? Увольте.
    Вам нечего сказать по делу. Вы можете только щеки надувать.

    Да как же мне об этом не думать, если это в Вашем случае 100% факт, причем подтвержденный Вами же:
    Выше это Ваши слова?

    Код (Text):
    1. exec/wscript/shell.js
    Детский сад - сопливая группа.

    Причем в 7м IIS, если я правильно помню, это можно сделать без последних двух вещей :D
    Эх.... бездари и неучи...

    Проблема! Решить!

    Жесть.