2011-04-01 14 views
5

Aproximadamente 10 veces al día recibimos un error de archivo no encontrado en nuestros registros de la aplicación Coldfusion para los archivos que EXISTEN en el servidor. El error específico esColdfusion: archivo .cfm no encontrado cuando existe en el servidor

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

y el seguimiento de pila:

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) 

nuestro entorno servidor:

  • Ubuntu 10.04 LTS
  • Coldfusion 9,01
  • CFWheels

Si bien esto ocurre relativamente pocas veces en comparación con el número de solicitudes que estamos atendiendo, esto todavía es algo que me gustaría averiguar.

¿Alguien ha visto este error antes y puede decirme por qué Coldfusion decide al azar que los archivos no están allí?

Gracias.

+0

Dado que está en Ubuntu, solo quería asegurarse de que el archivo real esté en un formato inferior. Dudo que sea la causa, ya que dijiste que funciona la mayor parte del tiempo. – eapen

+1

La otra cosa que querrá comprobar es que el usuario que jrun (si está utilizando el servidor integrado para CF) tiene los permisos adecuados para el archivo. No puedo recordarlos en la cabeza, pero probablemente sean algo así como 664. (RWRWR) –

+0

Tuve un problema similar y el reinicio del servidor de Coldfusion lo arregló. – mhatch

Respuesta

1

A menos que lo haya cambiado, "/" es un directorio con alias en CF. En Windows, IIRC, esto apunta a la raíz del documento especificada en el proceso de instalación (a menos que se modifique), y supongo que es similar para los sistemas Linux. Mi conjetura es que una de dos cosas está sucediendo:

  • CFWheels espera para ser instalado en el directorio raíz, y no es (o/no está orientado hacia la ubicación de instalación para CFWheels)
  • Estás tratando de usar/para apuntar a un directorio que no es el alias de CF

Intente asegurarse de que/está apuntando hacia el frío con la plantilla que falta en el administrador de CF.

+1

Wheels está instalado correctamente y está en la raíz del sitio. El 99.9% de nuestra solicitud encuentra el archivo /rewrite.cfm. Pero al azar, CF no puede encontrar este archivo y arrojar allí el error anterior. – liferealized

2

Cuando puse ruedas en un subdirectorio tuve que editar el archivo .htaccess y asegurarme de que el nombre del subdirectorio estaba en las reglas de reescritura.

Otra vez que vi esto fue cuando alguien fue a un nombre de dominio que no estaba en Apache por lo que iría al sitio web predeterminado y arrojaría un extraño error como ese.

2

¿Está utilizando Hosts Virtuales basados ​​en nombre Apache? Las solicitudes que lleguen al servidor de ColdFusion por otra URL (digamos http://localhost) no encontrarán necesariamente los archivos en la raíz de un vhost basado en nombre. A veces me toparé con esto con las tareas programadas de CF que se configuran apuntando a localhost.

¿Puede alinear la solicitud real en sus registros de Apache con la incorrecta en sus registros de CF?

0

¿Qué pasa al dejar la memoria caché de confianza por un tiempo, y asegúrese de que puede acceder al archivo.

O borre la caché y asegúrese de que la plantilla esté accesible.

+0

La memoria caché de Truste no está activada para el servidor. – liferealized

0

Cuando hago referencia a un archivo en un servidor, a menos que esté en un directorio específico que se codifica por algún motivo, utilizo ExpandPath ...por ejemplo:

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

Esto supone que el archivo está en el mismo directorio que la plantilla actualmente en ejecución.

1

Nos encontramos con un problema similar. Para nosotros, estábamos llegando al límite de la cantidad de archivos abiertos.

Puede ejecutar: ulimit -Hn y ulimit -Sn a ver los límites actuales para el usuario correspondiente.

Modifique /etc/security/limits.conf para actualizar el límite de archivos abiertos.

Cuestiones relacionadas