在我的项目中,我创建了一个servlet,用户可以在该servlet上上传媒体文件。这些文件将根据上下文参数中的路径保存。在我的家用Windows PC中,它运作良好。但是,在我的Linux vps上,localhost.log文件上出现此拒绝权限错误。
java.io.IOException: Permission denied
at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.base/java.io.File.createNewFile(File.java:1024)
at post.Upload.doPost(Upload.java:194)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
该文件应该在/ var / sociogram / media / public上创建并写入。我尝试过
chown -R tomcat:tomcat /var/sociogram/media
,并且在执行操作时对用户具有读写权限
ls -l /var/sociogram/media
答案 0 :(得分:0)
但是,在我的linux vps上,localhost.log文件上出现此拒绝权限错误。
该错误消息中提到的文件路径-是否存在?
$ CATALINA_BASE目录中是否有“ temp”目录? (除了通常的“ conf”,“ webapps”,“ logs”和“ work”目录)。
答案 1 :(得分:0)
主要问题是我的目录仅具有读写权限。我意识到,对于unix系统,必须对目录授予x权限,以便该程序可以横向访问目录。没有它的读取,写权限将毫无用处。