我想tomcat tomcat, java & php 一起用。我的java程序创建了一个文本文件并在文件上写了一些东西,当我运行时没有创建文件。 java程序通过命令行运行。我将所有文件保存在/usr/local/tomcat/webapps/testjava 中。 Java文件内容:
public class test
{
public static void main(String args[]) throws IOException
{
try{
Writer fos = null;
File outputFile = new File("outList.txt");
fos = new BufferedWriter(new FileWriter(outputFile));
fos.write("hi");
fos.write("\n");
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
PHP文件内容:
<?php
$output = exec("java test", $ret);
echo $ret;
echo file_get_contents("outList.txt");
echo "HI";
?>
$ret 给定输出为数组。 HI 正在显示。
还有一点,当我在命令行上执行 php index.php 时,它正在运行,这意味着正在创建 outList.txt。
var_dump($ret) 给出:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.RuntimeException: PHP Parse error: syntax error, unexpected T_ECHO in /usr/local/tomcat/webapps/testjava/index.php on line 7
php.java.servlet.fastcgi.FastCGIServlet.handle(FastCGIServlet.java:499)
php.java.servlet.fastcgi.FastCGIServlet.doGet(FastCGIServlet.java:521)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.RuntimeException: PHP Parse error: syntax error, unexpected T_ECHO in /usr/local/tomcat/webapps/testjava/index.php on line 7
php.java.servlet.fastcgi.FastCGIServlet.parseBody(FastCGIServlet.java:409)
php.java.servlet.fastcgi.FastCGIServlet.execute(FastCGIServlet.java:433)
php.java.servlet.fastcgi.FastCGIServlet.handle(FastCGIServlet.java:481)
php.java.servlet.fastcgi.FastCGIServlet.doGet(FastCGIServlet.java:521)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.
最佳答案
好吧,对于初学者来说,您的文件名在 Java 和 PHP 代码之间是不同的(outList.txt
与 out.txt
)。这是发布问题时的错误还是代码中的真正错误?
否则,我建议您查看 PHP exec
调用的返回值和错误输出(如果有)——很可能是 Java 调用未能正确运行并且检查这些会告诉你原因。可能有很多原因 - 在运行 PHP 预处理器的用户的路径上找不到 java
,在任何类路径设置中都找不到 test.class
文件,等等。能够以交互方式运行 Java 命令和让它由网络服务器运行是非常不同的事情,因为这是高度依赖于环境的。
关于java - tomcat java php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113855/