私は、exec関数を使ってjavaコードをコンパイルする小さなPHPスクリプトを作成しています。私はコンパイルが失敗し、コンパイルの問題をログファイルに書きたいが、ログファイルには何も含まれていない。どのようにしてエラーメッセージをそのログファイルにコンパイルできますか?事前にPHP exec( "javac file.java >> log.txt")はコンパイルエラーをファイルに書き込まない
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 'On');
error_reporting(E_ALL);
// When it doesn't compile, it doesn't write error to log.txt
$class = 'class runrunrun
{
public static void main (String args[])
{
System.out.println("Hello world!");
FAIL NOW!!
}
}';
$myfile = fopen("runrunrun.java", "w+") or die("Unable to open file!");
fwrite($myfile, $class);
fclose($myfile);
exec("javac runrunrun.java >> log.txt", $foo, $compileFlag);
if ($compileFlag != 0) {
echo "COMPILE ERROR\n";
}
?>
おかげ
編集:私はAFSサーバー上でこれを実行しようとしています。 lsb_releaseの出力は次のとおりです。これで少しクリアされることを願っています。
LSBバージョン::base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics- noarch:印刷-4.0-AMD64:印刷-4.0-noarch
ディストリビュータID:科学
概要:科学のLinux 6.8をリリース(カーボン)
リリース:6.8
コードネーム:カーボン
デフォルトシェルはBASH
使用しているO/Sとシェルが不明です。あなたがMacまたはUnixの箱にいる場合は、Bashを使用していると思われますが、その場合は「javac runrunrun.java 2>&1 >> log.txt」とします。 stderrをstdoutにリダイレクトします。あなたの環境についてもっと知りましょう。 – stdunbar
@stdunbarそれを指摘していただきありがとうございます!あなたが尋ねた情報の質問を更新しました。私はこれが助けて欲しい –