我想從我的Java應用程序運行一些PHP代碼片段。在Java中運行Quercus 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");
,我已經看到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/描述...
.war文件可以在Java應用程序服務器上運行的櫟如 Glassfish,即它可以在Resin外運行。這個.war文件 包括Quercus解釋器和PHP庫。
我已經下載了該網頁上war文件(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?
謝謝,
嗨。感謝您的答覆。不過,我現在將自己的答案標記爲答案,因爲它適用於分佈式源(vs trunk)。 – woddle