2011-04-01 93 views
5

大约每天10次我们在我们的Coldfusion应用程序日志中发现文件未找到服务器上EXIST文件的错误。特定的错误是Coldfusion - .cfm文件在服务器上存在时未找到

"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随机决定这些文件不存在吗?

谢谢。

+0

既然你是在Ubuntu上,只是想确保实际的文件是较低的。自从你说大多数时候起作用,我怀疑这是事业的原因。 – eapen 2011-04-01 22:46:54

+1

您要检查的另一件事是,jrun的用户(如果您正在使用CF的内置服务器)对该文件具有适当的权限。我无法记住他们,但他们可能类似于664.(RWRWR) – 2011-04-02 00:24:14

+0

我有类似的问题,并重新启动Coldfusion服务器修复它。 – mhatch 2017-06-20 18:35:23

回答

1

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

  • CFWheels期望被安装在根目录下,而不是(或/度并未达到CFWheels安装位置指出)
  • 你是尝试使用/指向不是CF中别名的目录

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

+1

车轮安装正确,位于现场的根部。我们的请求中有99.9%正在查找/rewrite.cfm文件。但随机地,CF无法找到这个文件,并抛出上面的错误。 – liferealized 2011-04-01 17:16:38

2

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

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

2

您使用的是基于Apache名称的虚拟主机吗?通过另一个URL(例如http://localhost)命中ColdFusion服务器的请求不一定会在基于名称的虚拟主机的根目录中找到文件。我有时会用CF Scheduled Tasks来解决这个问题,它将设置指向localhost。

您是否可以将您的Apache日志中的实际请求与CF日志中的违规日志一起排队?

0

如何让可信缓存关闭一段时间,并确保您可以访问该文件。

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

+0

服务器的Truste缓存未打开。 – liferealized 2011-04-05 11:00:36

0

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

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

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

1

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

您可以运行: ulimit -Hnulimit -Sn 看到了相关用户的电流限制。

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

相关问题