服务器重启时无法读取/写入Coldfusion 8.01 tmpCache目录

时间:2011-06-30 16:40:09

标签: coldfusion

我在安装CF8.01时遇到了一个奇怪的问题。我最近更新了coldfusion图像修补程序(kb403411)&发现突然CF开始需要为一些图像处理函数使用新目录[imageresize()]

{coldfusionh_home} / tmpCache&它的子目录/ CFFileServlet / _cf_image /。最初tmpCache不存在&必须被创建,它的子目录是自动创建的。但是这里有3个问题:

  1. Coldfusion似乎没有从子目录中删除临时文件
  2. 首次尝试在第一次重新启动coldfusion后向这些目录写入内容时会抛出错误。后续的读/写尝试都没问题。 [追踪下面的帖子]
  3. 必须将目录条目添加到沙箱设置以允许访问此目录[实际上这更像是PIA而不是问题 - 这是沙箱的正确行为]
  4. 所以我有几个问题:

    1. 如何测试/确保CF在不再需要时删除这些文件
    2. 启动错误的可能原因是什么?如何解决?
    3. 沙箱的事情是痛苦的,可以告诉CF使用/ tmp或/ var / tmp或者其他东西
    4. 我在目录结构上尝试了几种不同的所有者/权限组合&我确信它不是权限。

      任何想法/想法?

      这是错误跟踪:

      image rezise
      500
      
      ROOT CAUSE: 
      java.security.AccessControlException: access denied (java.io.FilePermission /opt/coldfusion8/tmpCache read)
      at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
      at java.security.AccessController.checkPermission(AccessController.java:546)
      at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
      at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
      at java.io.File.exists(File.java:731)
      at coldfusion.runtime.RuntimeServiceImpl.getTempCacheDirectory(RuntimeServiceImpl.java:2038)
      at coldfusion.tagext.io.ImageTag.getTempImageFile(ImageTag.java:637)
      at coldfusion.tagext.io.ImageTag.writeImageToBrowser(ImageTag.java:571)
      at coldfusion.tagext.io.ImageTag.doStartTag(ImageTag.java:459)
      at cftest2ecfm1941538635.runPage(/var/www/vhosts/bigblock.ca/subdomains/propaganda/httpdocs/filetest/test.cfm:29)
      at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
      at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
      at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
      at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:288)
      at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
      at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
      at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
      at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
      at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
      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.CfmServlet.service(CfmServlet.java:198)
      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)
      
      javax.servlet.ServletException: ROOT CAUSE: 
      java.security.AccessControlException: access denied (java.io.FilePermission /opt/coldfusion8/tmpCache read)
      at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
      at java.security.AccessController.checkPermission(AccessController.java:546)
      at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
      at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
      at java.io.File.exists(File.java:731)
      at coldfusion.runtime.RuntimeServiceImpl.getTempCacheDirectory(RuntimeServiceImpl.java:2038)
      at coldfusion.tagext.io.ImageTag.getTempImageFile(ImageTag.java:637)
      at coldfusion.tagext.io.ImageTag.writeImageToBrowser(ImageTag.java:571)
      at coldfusion.tagext.io.ImageTag.doStartTag(ImageTag.java:459)
      at cftest2ecfm1941538635.runPage(/var/www/vhosts/bigblock.ca/subdomains/propaganda/httpdocs/filetest/test.cfm:29)
      at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
      at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
      at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
      at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:288)
      at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
      at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
      at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
      at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
      at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
      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.CfmServlet.service(CfmServlet.java:198)
      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)
      
      at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
      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)
      

1 个答案:

答案 0 :(得分:0)

好吧,我看到没有其他人无法帮助,所以我会尝试从你的个人经历中给你一个提示。

例如,如果您在页面执行期间进行了一些文件i / o操作,例如文件上传,你使用java本机类进行文件操作,在调用File close()方法之前抛出异常,所有文件都被锁定,无法在没有更高权限和/或服务器重启的情况下打开/删除。 发生了几十次,所以我可以认为它可能恰好是你的问题。

干杯, ž。