首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中运行Quercus

在Java中运行Quercus
EN

Stack Overflow用户
提问于 2012-11-12 15:45:15
回答 2查看 4.4K关注 0票数 2

我正在尝试从我的Java应用程序中运行一些PHP片段。

我见过这样的问题:PHP Call from Java Using Quercus

这很简单地表明:

代码语言:javascript
复制
import com.caucho.quercus.QuercusEngine;

QuercusEngine engine = new QuercusEngine();
engine.setOutputStream(System.out);
engine.executeFile("src/test.php");

我也见过%28CLI%29,它表明:

代码语言:javascript
复制
QuercusEngine engine = new QuercusEngine();
engine.setIni("foo", "bar");
engine.execute("<?php var_dump(ini_get('foo')); ?>");

但这样的话我就明白了:

代码语言:javascript
复制
Exception in thread "main" com.caucho.quercus.QuercusErrorException: eval::1: Fatal Error: 'var_dump' is an unknown function.
        at com.caucho.quercus.env.Env.error(Env.java:6559)
        at com.caucho.quercus.env.Env.error(Env.java:6445)
        at com.caucho.quercus.env.Env.error(Env.java:6109)
        at com.caucho.quercus.expr.CallExpr.evalImpl(CallExpr.java:198)
        at com.caucho.quercus.expr.CallExpr.eval(CallExpr.java:151)
        at com.caucho.quercus.expr.Expr.evalTop(Expr.java:523)
        at com.caucho.quercus.statement.ExprStatement.execute(ExprStatement.java:67)
        at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:413)
        at com.caucho.quercus.QuercusEngine.execute(QuercusEngine.java:139)
        at com.caucho.quercus.QuercusEngine.execute(QuercusEngine.java:100)

对于任何函数,我都会得到同样的东西-- strlen,strcmp,phpinfo等等。

正如http://quercus.caucho.com/描述的那样..。

Quercus .war文件可以运行在Java应用服务器(如Glassfish )上,也就是说,它可以在树脂之外运行。这个.war文件包括Quercus解释器和PHP库。

我已经从那个页面(http://caucho.com/download/quercus-4.0.25.war)下载了war文件。

我在奔跑

代码语言:javascript
复制
$ javac -cp 'WEB-INF/lib/resin.jar;.' TestQuercus.java
$ java -cp 'WEB-INF/lib/resin.jar;.' TestQuercus

完整的文件是

代码语言:javascript
复制
import com.caucho.quercus.QuercusEngine;

public class TestQuercus {

    public static void main(String[] args) throws Exception {
    QuercusEngine engine = new QuercusEngine();
    engine.setIni("foo", "bar");
    engine.execute("<?php var_dump(ini_get('foo')); ?>");
    }

}

我能做到

代码语言:javascript
复制
java -cp 'WEB-INF/lib/resin.jar' com.caucho.quercus.CliQuercus foo.php

其中foo.php包括<?php phpinfo; ?>

那么,我如何才能从那里到一个工作的QuercusEngine呢?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-13 07:51:10

如下所示。

代码语言:javascript
复制
import javax.script.ScriptEngine;
import com.caucho.quercus.script.QuercusScriptEngineFactory;

QuercusScriptEngineFactory factory = new QuercusScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();

String code = "<?php $foo = strlen('abc'); print $foo; return 'yikes'; ?>";
Object o = engine.eval(code);
System.out.println(o);
票数 1
EN

Stack Overflow用户

发布于 2012-11-13 18:31:47

这是个窃听器。我刚修了4.0.33,很快就能出来了。如果您愿意,可以在我们的公共svn存储库中自己构建Quercus:

代码语言:javascript
复制
svn checkout svn://svn.caucho.com/home/svn/svnroot/resin/trunk resin
cd resin
ant

Jars将是树脂/lib/树脂-kernel.jar和树脂/lib/quercus.jar。

有关bug的参考,请参见http://bugs.caucho.com/view.php?id=5270

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13346804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档