coldfusion 8和2016:CFEXECUTE不返回结果/错误

时间:2018-08-09 02:25:36

标签: coldfusion coldfusion-8 coldfusion-2016

我在浏览器中得到的只是一个空白屏幕。如果我不使用IsDefined,则会在页面中收到错误消息,指出该变量不存在。

如果我拼错了一个命令(例如:使用/ bin / bsh而不是/ bin / bash),则会出现异常,指出CF无法找到该程序。所以它似乎正在工作。我只想检查它是否真的在运行。

这是我的代码:

------
<cfexecute name="/bin/ls" arguments=" -la /" errorVariable="error" variable="result"></cfexecute>
<cfif IsDefined("result")>
    <cfdump var="#result#">
</cfif>
<cfif IsDefined("error")>
    <cfdump var="#error#">
</cfif>

<cfexecute name="/bin/bash" arguments=" -c '/bin/ls -la /'" errorVariable="error" variable="result"></cfexecute>
<cfif IsDefined("result")>
    <cfdump var="#result#">
</cfif>
<cfif IsDefined("error")>
    <cfdump var="#error#">
</cfif>

2 个答案:

答案 0 :(得分:2)

您需要在cfexecute上指定timeout,以便顺序获取有效的结果/错误。

默认timeout0,它是非阻塞的,这意味着您的命令是异步执行的。这意味着您不会立即得到结果。

对于Adobe,我不确定“非阻塞”是指variableerror属性是被完全忽略还是最终被设置。如果您好奇,可以扔cfsleep并找出来,只是请不要投入生产。 :)

答案 1 :(得分:0)

您必须指定要执行的应用程序的绝对路径。在Windows上,请指定扩展名,例如C:\ myapp.exe。

我已经使用cfexecute运行了我的sqlCMD,在这里,我已经传递了MS sql服务器的绝对路径。

<cfexecute name="C:\Program Files\Microsoft SQL Server2016\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" arguments=" -S localhost -U sa -P sqlPwd@12## -i" timeout="0" errorFile="#logsDir#/#TableSqls.name#_error.txt">

</cfexecute>

希望对您有帮助。