2

我想创建一个日志文件。我试过了,但它告诉我一个错误。任何人都可以帮忙吗?我在这里展示我的完整代码:

http://pastebin.com/SxAMCUnv

请看这条线。我不知道它发生了什么,可以输出错误:

<cffile action="WRITE" file="#expandpath('API.log')#" 
    output="#filecontent#" addnewline="Yes" fixnewline="No"

编辑:我试过了,它向我显示了一个错误:

在第 213 行第 110 列发现无效的 CFML 构造。ColdFusion 正在查看以下文本:

''

CFML 编译器正在处理:

A cffile tag beginning on line 213, column 2.

主要错误在这一行:

<cffile action="WRITE" file="#expandpath('Info.log')#" 
   output="#filecontent#" addnewline="Yes" fixnewline="No" 

请告诉我发生了什么事?

4

2 回答 2

3

一些东西。

  1. 当您遇到错误时:告诉我们错误是什么,不要简单地说您遇到了错误。
  2. 当您发布代码时,只发布与您的情况相关的代码,不要发布所有代码。你给了我们将近 200 行代码,几乎所有的代码都不相关。
  3. 您没有说明您自己在这里完成了哪些故障排除。这基本上就像您要求我们简单地为您完成您的工作。

如果你澄清你的问题,我会取消我的反对票。

粗略地看一下您的代码表明您正在尝试写出一个变量fileContent,但您实际上并没有设置该变量。如果没有看到错误,就无法知道这是否是问题所在,或者变量是在您包含的代码中创建的。

另一个考虑因素是您在这里稍微重新发明了轮子。ColdFusion 具有用于写入日志文件的内置<cflog>标签或语句。writeLog()

=====

更新(基于对问题的更新)这是您遇到的编译错误,并且出错的行不是您在代码中指出的行(@pastebin),这有点奇怪。你能确认第 213 行是那条<cffile>线吗?您能否完整地复制该行(您引用的片段不完整)。但基本上错误消息告诉您出了什么问题:您的代码中有语法错误。错误消息可能在特定语句中(行和列),尽管有时取决于代码,CF 编译器可能会感到困惑,并且前一行中的语法错误可能会报告为比实际文件更靠后是。但是对于初学者来说,发布整行代码,而不仅仅是它的第一部分。

于 2012-12-19T07:14:57.800 回答
1

评论 tl;dr 版本 - 这个答案有效,但提问者开始询问有关新错误的问题,他被敦促创建一个新问题。

答: 我在您发布的链接中没有看到这一行(我搜索了api.log)。 Invalid CFML construct通常意味着您有语法错误,通常忘记结束引号、第二磅或结束标记(大于)。如果以下建议不起作用,请在包含 cffile 的行的上方或下方查找闭合对的缺失部分。

您发布的代码:

<cffile action="WRITE" file="#expandpath('API.log')#" output="#filecontent#" addnewline="Yes" fixnewline="No"

...没有大于关闭标签的关闭。如果那是您的实际代码,我会怀疑这是问题所在。

<cffile ...  >
            ^^^ this is missing right here

如果您不打算采纳 Adam 的建议并使用 cflog(您应该这样做),那么您可能也想要action="append"或者您将继续用 fileContent 的内容覆盖文件。

==编辑==

附带说明,这不会解决您的问题,但您应该使用 cfqueryparam,尤其是在使用用户输入的数据时。

例如:

Select * 
FROM   Purchasers 
WHERE  PurchaserID = #PurchaserID#

应该

Select * 
FROM   Purchasers 
WHERE  PurchaserID = <cfqueryparam cfsqltype="cf_sql_integer" value="#PurchaserID#">
于 2012-12-19T10:57:48.737 回答