【问题标题】:Directory does not exist, but clearly does目录不存在,但显然存在
【发布时间】:2016-06-01 21:31:02
【问题描述】:

我正在为我的公司开发一个旧的 Coldfusion 11 应用程序,这个错误让我很困惑。 .cfm 内有以下检查:

<cffunction name="init">
<cfargument name="searchDir" required="yes" default="#replace(GetDirectoryFromPath(GetCurrentTemplatePath()),'/services','')#xml/">
    <cfargument name="checkoutMode" required="no" default="protect">

    <!--- library variables initialization --->
    <cfset Variables.libBaseDir = arguments.searchDir>
    <cfset Variables.libCheckoutMode = arguments.checkoutMode>


    <cfif NOT DirectoryExists(Variables.libBaseDir)>
        <cfthrow message="The base document directory '#Variables.libBaseDir#' does not exist!">
    </cfif>
    ....
</cffunction>

Variable.libBaseDir 在错误消息中打印为:

/opt/app/coldfusion/coldfusion11/cfusion/wwwroot/<some-app>/xml/

但我的目录明明如下(使用pwd):

/opt/app/coldfusion/coldfusion11/cfusion/wwwroot/<some-app>/xml

这适用于 Windows 服务器,但不适用于 Linux,这是我这样做的唯一目的。

任何想法为什么这会引发错误,谢谢。

【问题讨论】:

  • CF 代码中有一个替换反斜杠服务。在 linux 下不行...
  • 你是说我需要使用这样的服务?或者那个服务不起作用?
  • xml 后的正斜杠不会出现在您的 pwd 输出中。
  • 我也试过了,把它从行尾删除了,没有运气。我的错误是我之前将反斜杠固定为正斜杠,我复制错误,它们目前是正斜杠。编辑了帖子。
  • 我没有运行 Linux,但出于好奇,它会在 all 目录下失败,还是仅在其中一些目录下失败?

标签: linux coldfusion server coldfusion-11


【解决方案1】:

这是我最终使用的,因为无论我做什么,路径的末尾都会继续附加一个“/”。

<cfargument name="searchDir" required="yes" default="#replace(GetDirectoryFromPath(GetCurrentTemplatePath()),'services/','xml')#">

<cfset Variables.libBaseDir = Left(arguments.searchDir, Len(arguments.searchDir)-1)>

所以我删除了路径末尾的“/”并修复了它。

感谢您之前的所有建议。

【讨论】:

  • 出于好奇,linux是什么味道的?我在 Ubuntu 中进行了一些硬编码测试,结果对我来说效果很好,不管有没有尾随的“/”。
猜你喜欢
  • 1970-01-01
  • 2018-08-12
  • 2020-10-31
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多