我有一个可以工作的文件上传 JSP,但现在不行。在我们更换服务器并更新软件(tomcat5 到 tomcat6 等)后,它现在无法正常工作。这是代码:
FileOutputStream fileOut = new FileOutputStream(savePathFile);
fileOut.write(dataBytes, startPos, (endPos - startPos));
该文件是使用第一行 new FileOutputStream(…) (filesize is 0) 创建的,但第二行 .write 会引发异常。该文件的所有者/组是 tomcat/tomcat。
所以看来tomcat应该有正确的权限。
我还查看了 tomcat java 权限策略(catalina.policy),看看是否有正确的 FilePermissions。他们不在那里,所以我们补充说:
grant codeBase "file:${catalina.home}/webapps/myapp/-" {
permission java.io.FilePermission "/var/lib/tomcat6/webapps/myapp/photographs", "read, write";
}
但这并没有什么不同。然后我被告知没有在启用安全选项的情况下启动tomcat。
tomcat6.conf:SECURITY_MANAGER="false"
我不确定我还应该去哪里看。我有几个明确的问题:
如何查看用户 tomcat 在此目录上实际拥有的权限 (rwx)?
如何验证tomcat是否在启用安全选项的情况下运行?
为了获得许可,它应该是:
grant codeBase "file:${catalina.home}/webapps/myapp/admin/-" {
因为upload.jsp 文件在webapps/myapp/admin 目录中?
谢谢你的帮助,弗兰克