在我设计的应用程序中,我将我的一个网页命名为“error.cfm”。我想让它在应用程序出错时显示。所以我将以下代码放在“error.cfm”中:
An uncaught exception just 'happened' :-(
<br><br>
<b><cfoutput>#exception.message#</cfoutput></b><br />
<cfoutput>#exception.detail#</cfoutput><br /><br />
<cfif isdefined('exception.cause')>
<b><cfoutput>#exception.cause.message#</cfoutput></b><br />
<cfoutput>#exception.cause.detail#</cfoutput>
</cfif>
<cfdump var="#exception#">
因此,在托管网站后,我发现此特定页面拒绝加载,而是显示“500内部错误”。然后我向我的托管公司抱怨,我收到了这些细节:
尊敬的客户,
实际的错误消息如下:
安全性:已拒绝请求的模板访问createobject(java) 以下是内部异常消息:拒绝访问(coldfusion.runtime.FunctionPermission createobject(java))
错误发生在C:\ inetpub \ vhosts \ plat4ad.com \ httpdocs \ cms \ error.cfm:第10行
8: 9: 10:
不幸的是,出于安全考虑,我们的服务器上禁用了一些标签和功能。您可以在此处查看完整列表:
https://support.dailyrazor.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=293&nav=0,29,76
如果您有任何其他问题,请告诉我们。
祝福, 支持-GG DailyRazor支持团队。
现在检查他们在服务器上禁用的标记列表,CFDUMP
就是其中之一:
在共享的ColdFusion服务器上,您可以访问所有标记和 功能除以下内容外:
CF标签:
- CFCOLLECTION
- CFCONTENT
- CFDUMP
- CFEXECUTE
- CFLOG
- CFOBJECT
- CFOBJECTCACHE
- CFREGISTRY
CF功能:
- SetProfileString
- 的CreateObject(COM)
- 的CreateObject(CORBA)
- 的CreateObject(JAVA)
请问CFDUMP
还有其他选择吗?或者有没有人知道任何没有这些限制的ColdFusion托管公司?我很感激你的任何想法。
答案 0 :(得分:5)
答案 1 :(得分:3)
如果你得到自己的VPS(谷歌:coldfusion VPS),你可以在任何你想要的机器上做。
没有cdump
的重点是安全措施。通常所有调试和转储原始数据都在开发服务器上完成,在托管服务器上运行应用程序,对吗? Error.cfm
用于隐藏捕获的异常详细信息,例如文件路径,有关已使用库的数据等。
有些方法可以在没有cfdump
的情况下显示数据。在您的情况下,我不明白为什么您不能使用普通cfoutput
并将异常详细信息写为2行输出。
在您的位置,我会获取fw / 1或Mura CMS的源代码,以了解它们如何处理错误消息,更好地了解更多有经验的人如何处理它然后“浪费”时间重新发明轮子。
答案 2 :(得分:0)
CFDUMP在它被包含在ColdFusion中之前就开始作为自定义标签。
它似乎仍然可以下载:http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1002037
您可能需要对其进行更改才能在更现代的CF版本中更好地工作(但更好),但它应该超过您所需要的90%。
答案 3 :(得分:0)
我将补充一点,如果您选择“转储”详细信息,您还可以将转储代码包装在查看cgi.REMOTE_ADDR的“if”块中,如果它与您的IP地址匹配,则执行dumpout,否则不会“T
<cfif cgi.REMOTE_ADDR EQ "167.96.177.66">
<!--- execute dump code here --->
</cfif>
警告:YMMV,必须有一个静态IP,必须在那个IP等等。