在Contribute File Deployer上写入权限问题?

时间:2012-08-09 19:07:04

标签: coldfusion-8 adobe-contribute

我已经使用Contribute的File Deployer工具已经有一段时间了,直到我们更换了推送文件的服务器之前,它才能很好地工作。推送文件本身工作正常,权限和所有。但主要功能的一部分是它扫描你的文件被推送到的目录,如果它不存在,那么它会创建所述目录。

截至目前,该工具的这一部分总是失败。正在推送的文件的完整路径格式为\\\x.x.x.x\sync$\path/to/folder(混合斜杠始终有效。)

这是在带有ColdFusion 8的Windows XP sp3上。

<cftry>
            <cfinvoke method="MakeSurePathExists" path="#serverPathToPush##siteRelative#">
            <cfcatch type="any">
                <cfthrow errorcode="NoLiveServerAccess" message="Can not access or do not have sufficient permissions to write to: #serverPathToPush##siteRelative#">
                <cflog application="yes" text="Can not access or do not have sufficient permissions to write to: #serverPathToPush##siteRelative#" file="Filedeployer" />
            </cfcatch>
        </cftry>

    <cffile action="copy" source="#settings.stagingFileSystemPath & siteRelative#" destination="#serverPathToPush##siteRelative#">
    <!--- touch the file so it gets the current date, so the browser will pull down the new one when previewed --->
    <cffile action="append" file="#serverPathToPush##siteRelative#" output="">

<!--- This function checks if the directory exist of the given file.
         If it doesn't, it tries to build path. If it fails, the function throws --->
    <cffunction name="MakeSurePathExists">
        <cfargument name="path" type="string" required="true">

        <cfset createList = ArrayNew(1)>
        <cfinvoke method="RemoveLastFileFromPath" path="#path#" returnvariable="parentdir">

        <cfloop condition="not DirectoryExists( parentDir ) and Len( parentDir ) gt 0 ">
            <cfset temp = ArrayAppend( createList, parentDir ) >
            <cfinvoke method="RemoveLastFileFromPath" path="parentdir" returnvariable="parentdir">
        </cfloop>

        <cfloop from="#ArrayLen( createList )#" to="1" step="-1" index="index">
            <cfdirectory action="create" directory="#createList[index]#">
        </cfloop>
    </cffunction>

    <cfscript>

        function RemoveLastFileFromPath( path )
        {
            rpath = Reverse( path ) ;
            idx2 = Find( "\", rpath ) ;
            idx = Find( "/", rpath ) ;
            if( idx2 is not "0" and idx2 lt idx )
                idx = idx2 ;
            if( idx is not "0" ) {
                rpath = Right( rpath, Len(rpath) - idx ) ;
                return Reverse( rpath ) ;
            }
            return "" ;
        }
    </cfscript>

我得到的友好错误是:

  

无法访问或没有足够的权限写入:\ x.x.x.x. \ sync $ \ path / to / folder / the-file.cfm

CFDUMP的错误:

  

此错误的最可能原因是文件系统上已存在\ x.x.x.x. \ sync $ \ path / to / folder /。在cfdirectory action =“create”期间发生了异常。

我知道共享网址末尾和相对路径之间的空格。同样,这在以前也不是问题,我不确定它现在是什么。

1 个答案:

答案 0 :(得分:1)

事实证明,在这种情况下,URL中的空间正在影响推送。我不得不在服务器地址周围添加一个trim(),这解决了这个问题。但是,为什么它现在只是一个问题,而不是在我永远不会知道之前。