apache可以从PHP写入但不提供文件的目录
我需要在linux上的apache上使用php提供非共享上传 我可以很好地处理文件上传,并将它们移动到所需的文件夹。我想问的是,我怎样才能做到即使有人知道那个文件夹和文件名,他们也不能通过浏览器下载文件 换句话说,我需要apache能够将文件移动到文件夹中,但不能为该文件夹中的文件提供服务 php可以写入docroot之外的文件吗?我可以用htaccess做些什么吗?甚至只是linux目录权限 我正要创建一个空白index.html,并给文件一个包含长随机字符串的名称(使它们不可用),但我决定一定有更好的方法apache可以从PHP写入但不提供文件的目录,php,.htaccess,unix,permissions,Php,.htaccess,Unix,Permissions,我需要在linux上的apache上使用php提供非共享上传 我可以很好地处理文件上传,并将它们移动到所需的文件夹。我想问的是,我怎样才能做到即使有人知道那个文件夹和文件名,他们也不能通过浏览器下载文件 换句话说,我需要apache能够将文件移动到文件夹中,但不能为该文件夹中的文件提供服务 php可以写入docroot之外的文件吗?我可以用htaccess做些什么吗?甚至只是linux目录权限 我正要创建一个空白index.html,并给文件一个包含长随机字符串的名称(使它们不可用),但我决定一
谢谢大家。在Apache DocumentRoot之外上传您的文件 即 (php文件所在的位置)
在/var/www/uploads/中上载您的文件并不是一个新问题——许多人(包括您的人)在某个时候发现他们的“上载”目录被各种文件交易商使用。。。幸运的是,解决方案很简单 您可以使Unix(我肯定,Windows也可以)文件和目录对于用户或组是可写的,但不可读。它有时被称为“负面权限”,一些被误导的个人(以及他们创建的脚本)会对这种设置皱眉,但这并没有什么问题 例如,这里有一个来自我的服务器的实际文件。我(“mi”)拥有它,而“www”组(httpd正在其下运行)可以写入它。但它无法从中读取。系统上的所有其他合法用户都可以读取它(您可能需要,也可能不需要): 上述设置的八进制模式(与chmod一起使用)为0624。你可以改变它以适应你的需要。例如,如果系统上没有其他用户能够访问该文件,那么您将使用0620
您还可以使用Apache的权限设置来阻止从目录提供服务,但这远不如Unix文件系统权限简单。这还意味着,如果您从Apache切换到其他web服务器,或者从Apache内部运行PHP切换到应用程序服务器,或者其他什么……那么我是否正确地认为,即使www数据用户(Apache运行的用户)理论上有权访问该文件夹(根据linux权限),它无法读取该文件夹,因为它位于docroot之外?尽管PHP的行为更像是在shell中登录的用户,Apache将能够读取它(因此您将能够在PHP中使用该文件),但它们永远不会在外部提供,Apache将只向您的访问者提供documentRoot中的内容。
DocumentRoot /var/www/public/
-rw--w-r-- 1 mi www .... /home/mi/public_html/.../download.log