2011-08-02 10 views
2

私は少し質問があります:Javaプログラムを実行する必要があり、コードの一部がユーザーによってアップロードされます。 だから私はそれらを実行するための最善の方法を知りたいですか?私は2つの可能な方法で、PHPのサンドボックスでJavaプログラムを実行する

  1. exec("javac Usercode.class")を知っているし、その後exec("java Main")で全体を実行するが、私はexec()でそれを試してみましたし、それが動作しません。おそらくhttpがrootではないからでしょうか?しかし、なぜ私は正確にそれを知りません。
  2. http://php-java-bridge.sourceforge.net/pjb/

もう1つの質問は、どのようにこれらのプログラムをサンドボックスで実行できるかです。私たちはDebianサーバーを持っているので、限られた時間でコマンドを実行することは問題ありませんが、サンドボックス内でコード全体を実行する方法はありますか?サンドボックス用

+0

「機能しない」とはどういう意味ですか?エラーメッセージが表示されましたか?出力はあなたが期待したものではありませんでしたか?権限の問題であると思われる場合は、Webサーバーを実行しているユーザーに変更して、プログラムを手動で実行してみてください。 –

+0

ありがとう、今それは働く.. どのようにサンドボックスに? – Nicolas

答えて

2

アイデア:例えば使用してchroot環境で

  • ランDebianのschrootコマンド。 chrootの外にあるファイルにアクセスすることを防ぎますが、ソケットを開けるようなことはしません。

  • 各ユーザには、自分自身の検証用のLinuxユーザ名があります。コマンドは適切なユーザー名で実行されます(sudoやset-uid実行ファイルを使用するなど)。

  • 高価で複雑な仮想サーバーのプールを維持しますが、最適な分離が得られます。

関連する問題