我正在尝试从我的 Java 应用程序运行一些 PHP 片段。
我见过这个问题: 使用 Quercus 从 Java 调用 PHP
这简单地表明:
import com.caucho.quercus.QuercusEngine;
QuercusEngine engine = new QuercusEngine();
engine.setOutputStream(System.out);
engine.executeFile("src/test.php");
我已经看到http://wiki.caucho.com/Quercus%3a_Command_Line_Interface_%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 文件可以在Glassfish 等Java 应用服务器上运行,即它可以在Resin 之外运行。这个 .war 文件包括 Quercus 解释器和 PHP 库。
我已经从该页面下载了战争文件(http://caucho.com/download/quercus-4.0.25.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 呢?
谢谢,