编译应用程序时,Resin(Quercus)PHP函数不起作用

时间:2013-08-27 23:14:06

标签: java php eclipse resin quercus

如果我犯了任何错误,请原谅我,因为这是我第一次发帖。

我正在开发一个使用Resin嵌入式库的Web应用程序 - 它在很大程度上取决于Resin附带的PHP引擎(Quercus)。经过3天的编码后,当我遇到Quercus的一个奇怪问题时,我决定是时候制作我的第一个可运行的jar用于在我的网络服务器上进行测试了 - 我想。 基本PHP函数,例如date,count和var_dump,当从我从服务器请求的PHP文件调用时,它们作为未知函数返回

但是从我的IDE(Eclipse 3.8)中的我没有遇到任何问题。回到我使用的第一个文档,我使用最少的代码和库创建了一个小测试应用程序。我按照http://www.caucho.com/resin-3.1/doc/resin-embedding.xtp的第一个教程的说明进行操作,我似乎也像以前一样得到了确切的问题。

测试应用的主要代码

public class Main
{
    public static void main( String[] args )
    {
        ResinEmbed resin = new ResinEmbed();

        HttpEmbed http = new HttpEmbed( 8080 );
        resin.addPort( http );

        WebAppEmbed webapp = new WebAppEmbed( "/", "/var/www" );

        resin.addWebApp( webapp );

        resin.start();
        resin.join();
    }
}

我用于测试的PHP文件

<?php var_dump( "Hello World" ); echo date("Y"); ?>

例外

com.caucho.quercus.QuercusErrorException: 'date' is an unknown function.
        at com.caucho.quercus.env.Env.error(Env.java:6885)
        at com.caucho.quercus.env.Env.error(Env.java:6408)
        at com.caucho.quercus.expr.CallExpr.evalImpl(CallExpr.java:188)
        at com.caucho.quercus.expr.CallExpr.eval(CallExpr.java:141)
        at com.caucho.quercus.statement.EchoStatement.execute(EchoStatement.java:55)
        at com.caucho.quercus.statement.BlockStatement.execute(BlockStatement.java:105)
        at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:414)
        at com.caucho.quercus.env.Env.evalCode(Env.java:4201)

所以我知道我的问题不在我的代码中,我尝试使用项目属性和不同的库版本而没有运气。现在,我正在使用最新版本的4.0.36和Java版本1.7_25 。我甚至在多台计算机上试过它(所有运行的Linux,因为我现在所使用的所有这些都是一天)。我一直在互联网上寻找帮助,但现有的线程似乎甚至没有接近我的问题。谁会知道会导致什么?我希望我的问题足够详细,不会太长或太详细。

如果有兴趣,我也可以发布我的应用程序的存储库,但上面的代码与我的应用程序有同样的问题,即使我的应用程序和上面的示例以稍微不同的方式执行代码。

更新

在广泛搜索和测试Quercus的来源后,我发现问题似乎与所有模块加载无关 - 即。模块添加了缺少的函数 - 所以我发现如果我使用“将所需的库复制到生成的JAR旁边的子文件夹”选项导出我的项目,它就像在IDE中一样。现在,由于这至少是让我的项目运行的临时解决方案,我仍然想知道如何正常编译而不会出现问题。 (IDE中加载了58个模块,编译时只加载了2个。)

0 个答案:

没有答案