Ошибка ColdFusion ImagePaste 500

#function #coldfusion

#функция #coldfusion

Вопрос:

Я только что начал получать ошибку 500 на сайте, использующем функцию cf ImagePaste() .

 <cfscript> ImagePaste(image, watermark, 0, 0); </cfscript>
<cfset ImagePaste(image, watermark, 0, 0) />
  

Я пробовал оба способа выше

Ниже приведен полный исходный код функции — она отлично работает с закомментированным imagepaste.

 <cffunction name="watermark" access="public" 
    description="adds the carproof logo to a jpeg" output="yes" returntype="any">
    <cfargument name="path" required="yes" type="string" default=""  />
    <cfargument name="filename" required="yes" type="string" />

    <cfimage source="#path##filename#" name="image">
    <cfimage source="#basepath#../Images/carproof-watermark.png" 
        name="watermark">
    <!---cfscript> ImagePaste(image, watermark, 1, 1); </cfscript--->

    <cfimage action="write" destination="#path##filename#" 
        source="#image#" overwrite="yes"  />
</cffunction>
  

Вот ошибка, которую я получаю:

 500

ROOT CAUSE: 
coldfusion.runtime.EventHandlerException: Event handler exception.
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:251)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:278)
    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.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.RequestThrottleFilter.invoke(RequestThrottleFilter.java:126)
    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)
Caused by: java.lang.ExceptionInInitializerError
    at coldfusion.image.Image.paste(Image.java:2307)
    at coldfusion.runtime.CFPage.ImagePaste(CFPage.java:5877)
    at cffile2ecfm1620657721$funcWATERMARK.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/CFC/file.cfm:19)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)
    at cffile2ecfm1620657721$funcUPLOAD.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/CFC/file.cfm:91)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)
    at cfimage2dupload2dtest2ecfm664365309.runPage(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/XHTML/image-upload-test.cfm:10)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661)
    at cfindex2ecfm1182266435.runPage(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/index.cfm:27)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661)
    at cfApplication2ecfc1506803272$funcONREQUEST.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Application.cfc:130)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
    at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:74)
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:243)
    ... 27 more
Caused by: java.lang.NullPointerException
    at com.sun.media.jai.util.PropertyUtil.getString(PropertyUtil.java:159)
    at javax.media.jai.JaiI18N.getString(JaiI18N.java:22)
    at javax.media.jai.OperationRegistry.initializeRegistry(OperationRegistry.java:357)
    at javax.media.jai.JAI.<clinit>(JAI.java:560)
    ... 63 more

javax.servlet.ServletException: ROOT CAUSE: 
coldfusion.runtime.EventHandlerException: Event handler exception.
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:251)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:278)
    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.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.RequestThrottleFilter.invoke(RequestThrottleFilter.java:126)
    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)
Caused by: java.lang.ExceptionInInitializerError
    at coldfusion.image.Image.paste(Image.java:2307)
    at coldfusion.runtime.CFPage.ImagePaste(CFPage.java:5877)
    at cffile2ecfm1620657721$funcWATERMARK.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/CFC/file.cfm:19)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)
    at cffile2ecfm1620657721$funcUPLOAD.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/CFC/file.cfm:91)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)
    at cfimage2dupload2dtest2ecfm664365309.runPage(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Assets/XHTML/image-upload-test.cfm:10)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661)
    at cfindex2ecfm1182266435.runPage(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/index.cfm:27)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:483)
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661)
    at cfApplication2ecfc1506803272$funcONREQUEST.runFunction(/var/www/vhosts/newride.ca/subdomains/admin/httpdocs/Application.cfc:130)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324)
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
    at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:74)
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:243)
    ... 27 more
Caused by: java.lang.NullPointerException
    at com.sun.media.jai.util.PropertyUtil.getString(PropertyUtil.java:159)
    at javax.media.jai.JaiI18N.getString(JaiI18N.java:22)
    at javax.media.jai.OperationRegistry.initializeRegistry(OperationRegistry.java:357)
    at javax.media.jai.JAI.<clinit>(JAI.java:560)
    ... 63 more

    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. Каково полное сообщение об ошибке (включая трассировку стека)?

2. Можете ли вы предоставить пример водяного знака и загруженных файлов? Что произойдет, если вы запустите только эту функцию для этих файлов? То есть не запускать его через upload() функцию.

3. запуск функции в одиночку приводит к тем же результатам: вы можете увидеть это здесь: propaganda.bigblock.ca/filetest — просто нажмите на test.cfm — файлы примеров также находятся там. -спасибо

4. @Sean — Он также работает без ошибок при 9,0,1,274733 и 8,0,1,195765. Какая у вас версия? Пути к изображениям также выглядят немного забавно. Если на секунду не учитывать область видимости, <cfimage action="writeToBrowser" source="#watermark#"> отображается ли действительное изображение?

5. Хм .. я запускаю 8,0,1,195765 — интересная ошибка с тегом изображения: «Безопасность: запрошенному шаблону было отказано в доступе к /opt / coldfusion8 / tmpCache». Этот путь не существует на сервере…

Ответ №1:

протестированы другие функции изображения, некоторые работают, а некоторые нет:

Многие функции обработки изображений используют JAI. Таким образом, учитывая сообщение Could not initialize class javax.media.jai.JAI , имеет смысл, что эти функции также не будут работать. Сначала я бы убедился, что путь к классу не был испорчен (отсутствует jar, слишком много jar и т.д.). Это наиболее распространенная причина проблем.

Но с java.lang.NoClassDefFoundError ошибками трудно разобраться. Просто предположение, но при ближайшем рассмотрении это может быть проблемой инициализации Caused by: java.lang.ExceptionInInitializerError . Я знаю, что JAI считывает некоторые файлы свойств из jars при запуске. Может быть, они недоступны по какой-то причине (отсутствуют, разрешения, ..)? Я не запускаю Centos. Итак, это мое лучшее предположение на данный момент.

Ответ №2:

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

Imagemagick, pil, gd и т.д.

Используете ли вы CF в OS X? (как и мы)

Библиотека JAI, которая поставляется с Java OS X, является более старой версией по сравнению с последней на моем компьютере с Windows. Некоторые функции редактирования изображений, по нашему мнению, просто не работают в наших средах разработки Mac, но отлично работают в их эквивалентах Windows.