Coldfusion - файл .cfm не найден, если он существует на сервере - PullRequest
5 голосов
/ 01 апреля 2011

Около 10 раз в день мы получаем сообщение об ошибке «файл не найден» в журналах нашего приложения Coldfusion для файлов, которые существуют на сервере.Конкретная ошибка:

"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
  • Coldfusion9.01
  • CFWheels

Хотя это происходит относительно мало раз по сравнению с количеством запросов, которые мы обслуживаем, я все же хотел бы выяснить это.

Кто-нибудь видел эту ошибку раньше, и можете ли вы сказать мне, почему Coldfusion случайно решает, что файлов там нет?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 02 апреля 2011

Используете ли вы виртуальные хосты Apache на основе имен?Запросы, которые попадают на сервер ColdFusion по другому URL-адресу (скажем, http://localhost), не обязательно будут находить файлы в корне виртуального хоста на основе имени. Я иногда сталкиваюсь с этим с помощью запланированных задач CF, которые настроены на локальный хост.

Можете ли вы выровнять фактический запрос в ваших журналах Apache с ошибочным в ваших журналах CF?

2 голосов
/ 01 апреля 2011

Когда я помещал колеса в подкаталог, мне нужно было отредактировать файл .htaccess и убедиться, что имя подкаталога было в правилах перезаписи.

В другой раз я увидел это, когда кто-то перешел на доменное имя, которого нет в Apache, поэтому он перешел на веб-сайт по умолчанию и выдал странную ошибку, подобную этой.

1 голос
/ 22 февраля 2012

Мы столкнулись с похожей проблемой. Для нас мы работали в пределе на количество открытых файлов.

Вы можете запустить: ulimit -Hn а также ulimit -Sn чтобы увидеть текущие ограничения для соответствующего пользователя.

Измените /etc/security/limits.conf, чтобы обновить ограничение на количество открытых файлов.

1 голос
/ 01 апреля 2011

Если вы не изменили его, "/" является псевдонимом каталога в CF.В Windows, IIRC, это указывает на корень документа, указанный в процессе установки (если не изменен), и я предполагаю, что он аналогичен для систем Linux.Я предполагаю, что происходит одна из двух вещей:

  • CFWheels ожидает установки в корневой каталог и не указывается (или не указывается в месте установки CFWheels)
  • Вы пытаетесь использовать /, чтобы указать на каталог, который не является псевдонимом в CF

Попробуйте убедиться, что / указывает на холоднее с отсутствующим шаблоном в Администраторе CF.

0 голосов
/ 27 января 2012

Всякий раз, когда я ссылаюсь на файл на сервере, если только он не находится в определенном каталоге, который по какой-то причине жестко запрограммирован, я использую ExpandPath ... например:

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

Предполагается, что файл находится в том же каталоге, что и текущий исполняемый шаблон.

0 голосов
/ 05 апреля 2011

Как насчет того, чтобы на некоторое время отключить доверенный кеш и убедиться, что вы можете получить доступ к файлу.

Или очистите кеш и убедитесь, что шаблон доступен.

...