初めて質問するので間違っていたらすみません。
私は、Resin Embedded Libraries を使用する Web アプリに取り組んでいます。これは、Resin に含まれている PHP エンジン (Quercus) に大きく依存しています。3 日間のコーディングの後、Quercus で奇妙な問題に遭遇したとき、Web サーバーでテストするための最初の実行可能な jar を作成する時が来たと判断しました。date、count、var_dump などの基本的な PHP 関数が、サーバーから要求した PHP ファイルから呼び出されたときに、不明な関数として返されました。
しかし、私の IDE (Eclipse 3.8) 内からは、これまでに何の問題もありませんでした。最初に使用したドキュメントに戻り、最小限のコードとライブラリを使用して小さなテスト アプリを作成しました。http://www.caucho.com/resin-3.1/doc/resin-embedding.xtpの最初のチュートリアルの指示に従いましたが、以前と同じように正確な問題が発生しているようです。
テスト アプリのメイン コード
public class Main
{
public static void main( String[] args )
{
ResinEmbed resin = new ResinEmbed();
HttpEmbed http = new HttpEmbed( 8080 );
resin.addPort( http );
WebAppEmbed webapp = new WebAppEmbed( "/", "/var/www" );
resin.addWebApp( webapp );
resin.start();
resin.join();
}
}
テストに使用した PHP ファイル
<?php var_dump( "Hello World" ); echo date("Y"); ?>
例外
com.caucho.quercus.QuercusErrorException: 'date' is an unknown function.
at com.caucho.quercus.env.Env.error(Env.java:6885)
at com.caucho.quercus.env.Env.error(Env.java:6408)
at com.caucho.quercus.expr.CallExpr.evalImpl(CallExpr.java:188)
at com.caucho.quercus.expr.CallExpr.eval(CallExpr.java:141)
at com.caucho.quercus.statement.EchoStatement.execute(EchoStatement.java:55)
at com.caucho.quercus.statement.BlockStatement.execute(BlockStatement.java:105)
at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:414)
at com.caucho.quercus.env.Env.evalCode(Env.java:4201)
だから、私の問題は私のコードにあるものではないことを知っているので、プロジェクトのプロパティとさまざまなライブラリのバージョンを試してみましたが、うまくいきませんでした。現在、最新バージョンの 4.0.36 と Java バージョン 1.7_25 を使用しています。複数のコンピューターで試したこともあります(すべてLinuxを実行しています。現在はこれだけを使用しているためです)。私は助けを求めてインターネットを行ったり来たりしてきましたが、既存のスレッドは私の問題に近づいていないようです. 誰がこれを引き起こすのか知っていますか?私の質問が長すぎたり詳細すぎたりせずに十分に詳細であることを願っています.
興味があれば、自分のアプリのリポジトリを投稿することもできますが、上記のコードは、私のアプリと上記の例がコードをわずかに異なる方法で実行していても、私のアプリと同じ問題を抱えています。
アップデート:
Quercus のソースを広範囲に検索してテストした結果、問題はすべてのモジュールがロードされていないことに関連しているように思われることがわかりました。モジュールは不足している機能を追加します -- そのため、「必要なライブラリを生成された JAR の隣のサブフォルダーにコピーする」オプションを使用してプロジェクトをエクスポートすると、IDE と同じように機能することがわかりました。さて、これは少なくともプロジェクトを実行するための一時的な解決策であるため、問題を起こさずに通常どおりコンパイルする方法を知りたいと思います。(IDE 内に 58 個のモジュールが読み込まれ、コンパイル時に読み込まれるのは 2 つだけです。)