CFMLには、スクリプトのパスにアクセスするための関数が 2 つあります。
getBaseTemplatePath()
getCurrentTemplatePath()
getBaseTemplatePath を呼び出すと、「ベース」スクリプトのパス、つまり Web サーバーによって要求されたパスが返されます。
getCurrentTemplatePath を呼び出すと、現在のスクリプト (現在実行中のスクリプト) のパスが返されます。
どちらのパスも絶対パスであり、スクリプトの完全なディレクトリとファイル名が含まれています。
ディレクトリのみを特定するには、結果に対して関数getDirectoryFromPath( ... )
を使用します。
したがって、アプリケーションのディレクトリの場所を特定するには、次のようにします。
<cfset Application.Paths.Root = getDirectoryFromPath( getCurrentTemplatePath() ) />
onApplicationStart
あなたのためのイベントの中でApplication.cfc
CFML エンジンを実行しているアプリケーション サーバーのパスを特定するには、cfexecute を使用してシェル コマンドにアクセスできます。したがって、(上記の pwd/etc に関する説明を念頭に置いて) 次のことができます。
ユニックス:
<cfexecute name="pwd"/>
Windows の場合、pwd.bat
含むテキストを作成して@cd
から:
<cfexecute name="C:\docume~1\myuser\pwd.bat"/>
(画面に出力する代わりに、variable
属性を使用しcfexecute
て値を保存します。)