2011-04-01 2 views
5

दिन में लगभग 10x हमें एक फाइल मिल रही है जो सर्वर पर मौजूद फ़ाइलों के लिए हमारे कोल्डफ्यूजन एप्लिकेशन लॉग में त्रुटि नहीं मिली है।कोल्डफ्यूजन - सर्वर पर मौजूद होने पर .cfm फ़ाइल नहीं मिली

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) 

हमारे सर्वर वातावरण:

  • उबंटू 10.04 LTS
  • Coldfusion 9.01
  • CFWheels
विशिष्ट त्रुटि

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

और स्टैक ट्रेस है

हालांकि यह हमारे द्वारा अनुरोध किए जा रहे अनुरोधों की संख्या के मुकाबले तुलनात्मक रूप से कुछ बार हो रहा है, यह अभी भी कुछ है जिसे मैं समझना चाहता हूं।

क्या किसी ने इससे पहले यह त्रुटि देखी है और क्या आप मुझे बता सकते हैं कि कोल्डफ्यूजन यादृच्छिक रूप से निर्णय लेता है कि फाइलें वहां नहीं हैं?

धन्यवाद।

+0

चूंकि आप उबंटू पर हैं, बस यह सुनिश्चित करना चाहते थे कि वास्तविक फ़ाइल कम-से-कम है। मुझे संदेह है कि यही कारण है क्योंकि आपने कहा था कि यह ज्यादातर समय काम करता है। – eapen

+1

दूसरी चीज जिसे आप जांचना चाहते हैं वह यह है कि उपयोगकर्ता जो jrun (यदि आप सीएफ के लिए सर्वर में निर्मित सर्वर का उपयोग कर रहे हैं) में फ़ाइल के लिए उचित अनुमतियां हैं। मैं उन्हें अपने सिर के ऊपर से याद नहीं कर सकता, लेकिन शायद वे 664 की तरह कुछ हैं। (आरडब्लूआरडब्ल्यूआर) –

+0

मेरे पास एक समान समस्या थी और इसेल्डफ्यूजन सर्वर को पुनरारंभ करने के लिए इसे ठीक किया गया था। – mhatch

उत्तर

1

जब तक आप इसे बदल नहीं लेते, "/" सीएफ में एक उपनाम निर्देशिका है। विंडोज़ में, आईआईआरसी, यह स्थापना प्रक्रिया में निर्दिष्ट दस्तावेज़ रूट को इंगित करता है (जब तक संशोधित नहीं किया जाता है), और मुझे लगता है कि यह लिनक्स सिस्टम के लिए समान है। मेरा अनुमान है कि दो में से एक हो रहा है:

  • CFWheels रूट निर्देशिका में स्थापित किया जा करने की उम्मीद है, और (या/CFWheels के लिए स्थापना स्थान पर बताया नहीं है)
  • आप कर रहे हैं नहीं है किसी निर्देशिका को इंगित करने/उस बिंदु पर इंगित करने के लिए जो सीएफ

सीएफ प्रशासक में लापता टेम्पलेट के साथ ठंडा करने की ओर इशारा करता है।

+1

पहियों को सही ढंग से स्थापित किया गया है और साइट की जड़ पर है। हमारे अनुरोध का 99.9% /rewrite.cfm फ़ाइल ढूंढ रहे हैं। लेकिन यादृच्छिक रूप से, सीएफ इस फ़ाइल को नहीं ढूंढ सकता है और उपरोक्त त्रुटि फेंक सकता है। – liferealized

2

जब मैंने उपनिर्देशिका में पहियों को रखा था तो मुझे .htaccess फ़ाइल को संपादित करना था और यह सुनिश्चित करना था कि उप निर्देशिका का नाम पुनर्लेखन नियमों में था।

एक और बार मैंने देखा कि जब कोई ऐसे डोमेन नाम पर गया जो अपाचे में नहीं था तो यह डिफ़ॉल्ट वेबसाइट पर जायेगा और इस तरह की एक अजीब त्रुटि फेंक देगा।

2

क्या आप अपाचे नाम-आधारित वर्चुअल होस्ट का उपयोग कर रहे हैं? अनुरोध जो कि किसी अन्य URL द्वारा ColdFusion सर्वर को दबाते हैं (http://localhost कहें) को नाम-आधारित vhost की जड़ में फ़ाइलों को जरूरी नहीं लगेगा। मैं कभी-कभी सीएफ अनुसूचित कार्यों के साथ इसमें भाग लेता हूं जो स्थानीयहोस्ट पर इंगित करते हैं।

क्या आप अपने सीएफ़ लॉग में अपमानजनक के साथ अपने अपाचे लॉग में वास्तविक अनुरोध को रेखांकित कर सकते हैं?

0

थोड़ी देर के लिए विश्वसनीय कैश को छोड़ने के बारे में क्या, और सुनिश्चित करें कि आप फ़ाइल तक पहुंच सकते हैं।

या कैश साफ़ करें, और सुनिश्चित करें कि टेम्पलेट सुलभ है।

+0

सर्वर के लिए ट्रस्ट कैश चालू नहीं है। – liferealized

0

जब भी मैं किसी सर्वर पर किसी फ़ाइल का संदर्भ देता हूं, जब तक कि यह किसी विशिष्ट निर्देशिका में नहीं है जो किसी कारण से हार्ड-कोडित हो जाता है, तो मैं ExpandPath का उपयोग करता हूं ...उदाहरण के लिए:

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

यह मानता है कि फ़ाइल वर्तमान में निष्पादित टेम्पलेट के समान निर्देशिका में है।

1

हम एक समान मुद्दे में भाग गए। हमारे लिए, हम खुली फाइलों की संख्या पर सीमा में भाग रहे थे।

आप चला सकते हैं: ulimit -Hn और ulimit -Sn प्रासंगिक उपयोगकर्ता के लिए वर्तमान सीमा को देखने के लिए।

खुली फ़ाइलों की सीमा को अद्यतन करने के लिए /etc/security/limits.conf संशोधित करें।