0

という名前のjarファイルがMyJar.jarあり、4つのパラメーターを受け入れます。PHPスクリプトを使用して、このjarファイルを実行する必要があります。php ファイルと jar ファイルは同じディレクトリにあります。
関数を使用しようとすると、system何も起こらず、何も出力されません。これは、 などの他の関数にも当てはまりexecますpassthru

これは、ファイルを実行しようとする方法です。

system('java -jar ./MyJar.jar arg1 arg2 arg3 arg4');
// and also
system('./MyJar.jar arg1 arg2 arg3 arg4');
// and also
exec('./MyJar.jar arg1 arg2 arg3 arg4',$output);
print_r($output);
// nothing works

更新:ご回答ありがとうございます。しかし、私はすべてを試しました。jar ファイルへの絶対パスを使用してみました。コマンドリレー機能と絶対パスおよび相対パスの可能な組み合わせをすべて試しました。を使用してディレクトリを変更してみchdirました。pwd私が正しい道にいることを示しています。もうどうしたらいいのかわからない。

更新 2:奇妙なことがわかりました。systemcallを使用して戻り値を指定すると、番号6が return になります。私が正しく理解していれば6、プロセスが中止されたか何かを意味します。私はそれが何を意味するのだろうか?

更新 3:エラー ログを確認したところ、次のエラーが生成されました。誰でも私を助けることができますか?

行 696 での dl の失敗Error: failed /usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/server/libjvm.so, because /opt/lampp/lib/libgcc_s.so.1: version ` GCC_4.2.0' が見つかりません (/usr/lib/i386-linux-gnu/libstdc++.so.6 で必要)

4

4 に答える 4

1

Apache のエラー ログを確認してください。実行がブロックされていて、エラーを非表示にするように PHP が設定されている可能性があります。

また、フル パス (far java と .jar ファイルの両方) を使用して (実験として) 試してみてください。

于 2012-08-24T07:15:00.820 に答える
0

ログを確認した後、PHP.iniが次のようなコマンドをブロックしていることがわかります。

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source 

'system'と'exec'を削除して、PHPでこれらの関数を許可します。

于 2012-08-24T07:19:42.990 に答える
0

ドメインでセーフ モードがオンになっているかどうかにかかわらず、ドメイン構成を調べてください。それはexec関数をブロックします

于 2012-08-24T08:26:38.063 に答える
0

または を使用して別のスクリプトから php スクリプトを呼び出しますincluderequire?

pwd へのシステム コールを実行して、正しい作業パスを確保します。jar ファイルへのパスと同じである必要があります。

system('pwd');

失敗する可能性のあるその他の方法: apache/php ユーザーは、jar ファイルの実行を許可されていません。jar ファイルに 0777 (-rwxrwxrwx) または 0666 (-rw-rw-rw) のファイル許可を設定してみて、違いが生じるかどうかを確認してください。

ファイルは本当に MyJar.jar という名前ですか? ケースは正しいですか?Linux では大文字と小文字が区別されます。ファイル名にスペース文字が含まれている場合は、ファイル名を引用/エスケープする必要があります。

Java 実行可能ファイルへのパスが見つからない可能性があります。system('which java')システムコールの呼び出しにパスを追加してみてください。jar ファイルへの絶対パスも試してください。


update 実際に実行できるかどうかをテストするために、PHP 内から Hello World Java Programm を開始してみてください。したがって、問題は Java Programm 自体にあるのではないことがわかります。

于 2012-08-24T07:16:53.273 に答える