В CFML есть две функции для доступа к пути скрипта:
getBaseTemplatePath()
getCurrentTemplatePath()
Вызов getBaseTemplatePath возвращает путь к «базовому» сценарию - то есть к тому, который был запрошен веб-сервером.
Вызов getCurrentTemplatePath возвращает путь к текущему сценарию, то есть к тому, который в данный момент выполняется.
Оба пути являются абсолютными и содержат полный каталог + имя файла сценария.
Чтобы определить только каталог, используйте функцию getDirectoryFromPath( ... )
по результатам.
Итак, чтобы определить местоположение каталога приложения, вы можете сделать:
<cfset Application.Paths.Root = getDirectoryFromPath( getCurrentTemplatePath() ) />
Внутри события onApplicationStart
для вашего Application.cfc
1020 *
*
<Ч />
Чтобы определить путь, по которому находится сервер приложений, на котором работает ваш механизм CFML, вы можете получить доступ к командам оболочки с помощью cfexecute, поэтому (учитывая вышеизложенные обсуждения pwd / etc) вы можете сделать:
Unix:
<cfexecute name="pwd"/>
для Windows, создайте pwd.bat
, содержащий текст @cd
, затем:
<cfexecute name="C:\docume~1\myuser\pwd.bat"/>
(Используйте атрибут variable
cfexecute
для сохранения значения вместо вывода на экран.)