gpt4 book ai didi

java - 在 Java 中运行 Quercus PHP

转载 作者:行者123 更新时间:2023-11-30 09:30:12 28 4
gpt4 key购买 nike

我正在尝试从我的 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");

而且我看到了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/ 所述...

The Quercus .war file can be run on Java application servers such as Glassfish, i.e. it can be run outside of Resin. This .war file includes the Quercus interpreter and the PHP libraries.

我已经从该页面下载了 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?

谢谢,

最佳答案

工作如下。

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);

关于java - 在 Java 中运行 Quercus PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346804/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com