如果我想将一个目录限制web访问,  但是此目录还要能够上传下载文件,如何去做呢?此文件夹主要是一个上传的文件夹,这个文件夹需要用户可以上传 和下载文件, 但是又不希望使用 url 直接下载。希望能有答案谢谢环境:apache + php 

解决方案 »

  1.   

    ?WEB服务器设置禁止此路径的访问(httpd: Deny from all, nginx: return 403)然后PHP脚本中用file_get_contents()读入该路径中的文件直接输出,并设置header的Content-Type为该资源对应的MIME类型(不知道就application/octet-stream)。
      

  2.   

    跟上传权限没有关系吧,上传权限是操作系统的ACL决定的,跟WEB服务器设置和PHP实现方式都没有关系(当然,非得设置open_basedir就例外了)。如果你是linux,就给那个目录chmod或chown一下,确保php的用户有rw权限。
    如果是windows,就给那个目录增加Guests的读、写和删除权限。
      

  3.   

    WEB服务器设置禁止此路径的访问(httpd: Deny from all, nginx: return 403)如果这样操作了, 上传文件的时候就不能保存到这个已经被禁止的路径了吧?
      

  4.   


    设置 access deny 或者 使用 http 认证  或者 重定向
    上传和下载通过另外的php文件进行的,和上面做的没有影响
      

  5.   


    跟这个操作没有关系。
    上传文件是PHP在服务端进行的读写操作,与WEB服务器的访问设置无关。
      

  6.   

    httpd。config:<Directory "E:/wwwroot/download/bak">
    Deny from all
    </Directory>php 文件存在E:/wwwroot/download
    download。php :<?php 
    $fileres = file_get_contents("http://localhost/download/bak/logo.jpg");
    echo $fileres;
    ?>上传按找刚才的办法,已经可以了,但是下载的时候会提示
    Warning: file_get_contents(http://localhost/download/bak/logo.jpg) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in E:\wwwroot\download\download.php on line 2就差这个问题了,希望能解决,辛苦各位
      

  7.   

    file_get_contents不要写网址,写一个物理(本机)的相对路径或绝对路径。