网站需要用到对用户上传文件进行格式校验的功能,有个开源的java类实现了这个功能。所以我除了apache之外,在机器上另外搭建了一个tomcat服务器,上面跑个php/javabridge。然后在apache上用php调用java类,现在的问题是,java类需要一个文件路径作为参数,我如果将普通的文件的绝对路径传递给java类,那么它能正常实现功能,如果我直接将上传文件的$_FILE['uploaded_file']['tmp_name']传递过去,那么tomcat那边就会报错, I/O error: /tmp/phpbpaDAG (权限不够) ,这是为什么呢?
理论上来说,java类只需要一个只读的权限,而且,如果传递的是一个普通的文件路径,那么即使这个文件只允许apache之外的用户读,那么java类也能正常实现功能。
在此请教各位。 

解决方案 »

  1.   

    1、你可以在 php 中检查一下文件的权限,看看是否能被tomcat读取
    2、你可以先移动文件到自己的目录,然后再传给java
    3、不就是格式校验吗?移植到php也不是难事,开源的嘛
      

  2.   

    谢谢你的回答。
    1、我google了一下,所有用户都对/tmp文件夹下面的文件有读权限。即时我将php.ini中的upload-tmp-dir改到一个别的目录,并将该目录权限改为777,tomcat仍然不能读取。
    2、这是个可行的方法,我发帖后就自己试过了一下,不过如果先存储,后校验,逻辑上似乎不顺。
    3、既然有现成的,还是用现成的算了。