2017-11-14 15 views
0

ColdFusion 11を実行しているSolaris 11.3ボックスで、次のディレクトリ構造を使用します。Apacheはシンボリックリンクをたどるように設定されています。私は以下のすべてのColdFusion設定オプションを使用しようとしました(デフォルトの順序、Webrootまで、Webrootで)。 test2.cfmはApplication.cfmから#DATASOURCE#を取得しないため、未定義です。ColdFusionハードリンクとApplication.cfc(Solaris)のSoftLinkトラバーサル検索

/webroot 
    - Application.cfm 
    /dir1 
     /dir2 
     /dir3 
      -test1.cfm 
     /dir4 (softlink to random directory) 
      -test2.cfm 

---------のApplication.cfm -------------

<CFSET DATASOURCE = "bob" > 
<CFAPPLICATION NAME = "bob_app" SESSIONMANAGEMENT = "YES" > 
<CFSET SESSION.USERID = "0" > 

--------- TEST1/test2.cfm検索パスは、リンクされたディレクトリの親でのApplication.cfmを含むように適切にシンボリックリンクを追加する方法について-------------

<cfoutput> 
The data source name is #DATASOURCE# 
</cfoutput> 

任意の提案。

答えて

2

ディレクトリ操作がシンボリックリンクされたディレクトリの絶対パスから上向きにスキャンされているため、上向きの再帰でトラバーサルがうまくいかないと思われます。シンボリックリンクはトラバースアップの良いパターンではありません。

静的資産以外のメインアプリケーションの拡張であるディレクトリには、シンボリックリンクを使用しないことをお勧めします。それは汚いし、理想的な未満ですけれども

代わりに、あなただけのこれらのディレクトリにApplication.cfmを追加し、ファイルの先頭に<cfscript>ブロックに<cfinclude template="/Application.cfm"/>(またはinclude "/Application.cfm";)を追加することができます。

+0

絶対パスではなく、シンボリックリンクされた相対パスを使用して、coldfusionが再帰を実行できるようにしていますか? (ColdFusionでURLを逆方向のトラバースを行う手段として使用できます) – Hedge7707

+0

上向きのトラバースを開始した時点で、実際のディレクトリ内から開始する 'Application.cfc'または' Application.cfm'を探します(例:シンボリックリンク)。ただし、symlinkと一致するアプリケーションマッピングを追加した場合、マップされたパスは、そのマッピング内からアイテムが呼び出されたり含まれたりすると、アプリケーションのスコープを継承します。 – JClausen

+0

論理パス(/ webroot/dir1/dir2/dir4)ディレクトリパス(/ real/path/dir4)または私が誤解していますか – Hedge7707

関連する問題