您好我是PHP的编程新手。我使用WAMP服务器 - > Apache版本2.4.4和PHP版本5.4.16
我想从php脚本执行java程序,这是我的java程序
file : test.java
import java.io.*;
public class test {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
我用过
exec("javac test.java");
exec(java test);
并没有用。所以我试着将命令代码放在“runfile.bat”
中javac test.java > error.txt
java test > output.txt
当我通过左键单击两次执行runfile.bat时,它运行完美,并在output.txt中显示文本“Hello World”
然后我从PHP尝试:
exec('start /B /C runfile.bat');
...而output.txt中没有任何内容。
答案 0 :(得分:1)
肯定是PHP的exec()会这样做。
<?php
exec('java test', $output, $return_var);
// `$output` captures the output of command executed
print_r($output);
// Generally `$return_var` becomes 0 if the command was successful
if (0 == $return_var) {
// Command successfull
}
?>
PS: 确保您的Java类路径正确。 一直在寻找PHP Manual - 这是我见过的最好的手册。
答案 1 :(得分:0)
您可能希望在此处完全限定路径(尤其是,如果这是一个Web应用程序):
exec("javac test.java");
exec("java test");
更像是:
exec("/path/to/javac /and/the/path/to/test.java");
exec("/path/to/java /and/the/path/to/test");
它可能是“正在运行”但工作目录不正确,因此可能无法找到javac
和java
可执行文件或可以找到它们但找不到test.java
。当您手动运行这些内容时,可执行文件位于您的路径中,并且该文件位于您的工作目录中,但对于PHP上下文,这两者都可能不正确。
除此之外,无论如何完全限定事物也是一种好习惯。它更明确,更不容易出错(如果用户以某种方式将自己的javac
可执行文件上传到您的网站,他们可以使用您的脚本以提升的权限执行它。)