Coldfusion - 在服务器上存在时找不到.cfm文件

时间:2011-04-01 16:53:54

标签: coldfusion

我们在Coldfusion应用程序日志中收到服务器上存在的文件时,我们每天大约发送10次错误信息。具体错误是

"File not found: /rewrite.cfm The specific sequence of files included or processed is: '''' "

和堆栈跟踪:

coldfusion.runtime.TemplateNotFoundException: File not found: /rewrite.cfm
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:69)
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
    at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
    at coldfusion.CfmServlet.service(CfmServlet.java:200)
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
    at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
    at jrun.servlet.FilterChain.service(FilterChain.java:101)
    at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
    at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
    at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
    at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
    at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
    at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
    at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
    at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
    at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

我们的服务器环境:

  • Ubuntu 10.04 LTS
  • Coldfusion 9.01
  • CFWheels

虽然与我们所服务的请求数量相比,这种情况发生的次数相对较少,但这仍然是我想要解决的问题。

之前有没有人看过这个错误,你能告诉我为什么Coldfusion随机决定文件不存在吗?

感谢。

6 个答案:

答案 0 :(得分:2)

当我把轮子放在子目录中时,我必须编辑.htaccess文件,并确保子目录名称在重写规则中。

另一次我看到这个时候有人去了一个不在Apache的域名,所以它会进入默认网站并抛出一个奇怪的错误。

答案 1 :(得分:2)

您使用的是基于Apache名称的虚拟主机吗?通过另一个URL(例如http://localhost)访问ColdFusion服务器的请求不一定会在基于名称的vhost的根目录中找到文件。我有时会遇到设置指向localhost的CF计划任务。

您可以将Apache日志中的实际请求与CF日志中的有效请求对齐吗?

答案 2 :(得分:1)

除非您更改了它,否则“/”是CF中的别名目录。在Windows,IIRC中,这指向安装过程中指定的文档根目录(除非修改),并且我认为它与Linux系统类似。我的猜测是发生了两件事之一:

  • CFWheels预计将安装在根目录中,而不是(或/未指向CFWheels的安装位置)
  • 您正在尝试使用/指向不是CF
  • 中的别名的目录

尝试确保/指向CF管理员中缺少模板的较冷者。

答案 3 :(得分:1)

我们遇到了一个类似的问题。对我们来说,我们遇到了打开文件数量的限制。

你可以运行: ulimit -Hnulimit -Sn 查看相关用户的当前限制。

修改/etc/security/limits.conf以更新打开的文件限制。

答案 4 :(得分:0)

如何暂停关闭可信缓存,并确保可以访问该文件。

或清除缓存,并确保模板可访问。

答案 5 :(得分:0)

每当我在服务器上引用文件时,除非它出于某种原因而被硬编码的特定目录中,我使用ExpandPath ...例如:

<cffile action="read" file="#ExpandPath('.')#/myfile.txt">

这假定文件与当前正在执行的模板位于同一目录中。