我正在尝试从我的Java应用程序中运行一些PHP片段。
我见过这样的问题:PHP Call from Java Using Quercus
这很简单地表明:
import com.caucho.quercus.QuercusEngine;
QuercusEngine engine = new QuercusEngine();
engine.setOutputStream(System.out);
engine.executeFile("src/test.php");我也见过%28CLI%29,它表明:
QuercusEngine engine = new QuercusEngine();
engine.setIni("foo", "bar");
engine.execute("<?php var_dump(ini_get('foo')); ?>");但这样的话我就明白了:
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文件。
我在奔跑
$ javac -cp 'WEB-INF/lib/resin.jar;.' TestQuercus.java
$ java -cp 'WEB-INF/lib/resin.jar;.' TestQuercus完整的文件是
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')); ?>");
}
}我能做到
java -cp 'WEB-INF/lib/resin.jar' com.caucho.quercus.CliQuercus foo.php其中foo.php包括<?php phpinfo; ?>
那么,我如何才能从那里到一个工作的QuercusEngine呢?
谢谢,
发布于 2012-11-13 07:51:10
如下所示。
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);发布于 2012-11-13 18:31:47
这是个窃听器。我刚修了4.0.33,很快就能出来了。如果您愿意,可以在我们的公共svn存储库中自己构建Quercus:
svn checkout svn://svn.caucho.com/home/svn/svnroot/resin/trunk resin
cd resin
antJars将是树脂/lib/树脂-kernel.jar和树脂/lib/quercus.jar。
有关bug的参考,请参见http://bugs.caucho.com/view.php?id=5270。
https://stackoverflow.com/questions/13346804
复制相似问题