Description |
(rep by willab)
I have used Resin as a J2EE container for quite a while and I am very happy with it. Just recently I've had the opportunity to get into Quercus and it looks very promising. I am trying to install Mint, PHP/javascript based web analytics package (http://www.haveamint.com/). [^] Running Resin 3.1.5 Pro I passed their compatibility suite test (http://www.haveamint.com/about/requirements#compatibility-suite) [^] and I can actually go to mydomain.com/phpappdirectory and it loads the page. However, recording requests is failing and the author determined it must be something about the relative paths or special handling of $_GET variables by Quercus, but could not get much further. I think this would be useful application for all other Resin users as well and any help is appreciated. Below is the code snippet and the exception. Cheers, Will com.caucho.quercus.QuercusExitException at com.caucho.quercus.env.Env.exit(Env.java:3852) at _quercus._mint._app._paths._auth._index__php.execute(_index__php.java:54) at com.caucho.quercus.env.Env.include(Env.java:3612) at _quercus._mint._app._path__php.execute(_path__php.java:101) at com.caucho.quercus.env.Env.include(Env.java:3612) at _quercus._mint._index__php.execute(_index__php.java:44) at com.caucho.quercus.page.QuercusPage.executeTop(QuercusPage.java:119) at com.caucho.quercus.servlet.ResinQuercusServlet.service(ResinQuercusServlet.java:146) at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:353) at javax.servlet.http.HttpServlet.service(HttpServlet.java:91) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103) at com.atlassian.confluence.util.LoggingContextFilter.doFilter(LoggingContextFilter.java:49) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:192) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.atlassian.seraph.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:112) at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:28) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:110) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.atlassian.confluence.util.ClusterHeaderFilter.doFilter(ClusterHeaderFilter.java:35) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.atlassian.core.filters.gzip.GzipFilter.doFilter(GzipFilter.java:61) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:181) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:269) at com.caucho.server.port.TcpConnection.run(TcpConnection.java:603) at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721) at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643) at java.lang.Thread.run(Thread.java:619) The code at that line looks like this: if ((! v_Mint.callMethod(env, 320930870, _qc_isLoggedIn, 10).toBoolean() && (v_Mint.getField(env, qv_cfg_6).get(qv_mode_7).eq(qv_default_8) || (v_Mint.getField(env, qv_cfg_6).get(qv_mode_7).eq(qv_client_9) && ((((v__GET.get(qv_preferences_10).isset() || v__GET.get(qv_uninstall_11).isset()) || v__GET.get(qv_import_12).isset()) || v__GET.get(qv_moved_13).isset()) || v__GET.get(qv_visits_14).isset()))))) { if (((v__POST = env.getGlobalVar("_POST")).get(qv_MintPath_15).isset() && v__POST.get(qv_MintPath_15).eq(qv_Auth_16))) { if (v_Mint.callMethod(env, 470942992, _qc_authenticate, 12).toBoolean()) { return NullValue.NULL; } } env.include(_quercus_selfDirectory, env.getConstant("MINT_ROOT").toStringBuilder(env).append(_qc_apppathsauthloginphp).toString(), false, false); env.exit(); // THIS IS THE LINE IN THE EXCEPTION } return LongValue.ONE; } The corresponding PHP code is: if ( !$Mint->isLoggedIn() && ( $Mint->cfg['mode'] == 'default' || ( $Mint->cfg['mode'] == 'client' && ( isset($_GET['preferences']) || isset($_GET['uninstall']) || isset($_GET['import']) || isset($_GET['moved']) || isset($_GET['visits']) ) ) ) ) { if (isset($_POST['MintPath']) && $_POST['MintPath'] == 'Auth') { if ($Mint->authenticate()) { return; } } include(MINT_ROOT.'app/paths/auth/login.php'); exit(); } |