1

The code in PHP using the exec() command looks like this:

exec('javac -classpath dir test.java');

I am wondering how I can catch syntax errors that exist within the test.java file.

2
  • 1
    By compiling test.java probably Commented Feb 4, 2015 at 15:44
  • If you can get what would otherwise be printed to the console, that's what you want. You should give us an example of what you've tried so far and an example of what you mean, so you get better answers. Commented Feb 4, 2015 at 15:58

2 Answers 2

2

You need to redirect stderr to stdout.

Append 2>&1 to the end of your command

exec('javac -classpath dir test.java 2>&1',$op);
var_dump($op);

Here 2 is stderr and 1 is stdout

Sign up to request clarification or add additional context in comments.

Comments

1

If you use all 3 exec arguments, you'll see the output:

from http://php.net/manual/en/function.exec.php

string exec ( string $command [, array &$output [, int &$return_var ]] )

exec() executes the given command.
Parameters ¶

command

    The command that will be executed.
output

    If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().
return_var

    If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.