Php 允许上传和浏览,但不允许下载

Php 允许上传和浏览,但不允许下载,php,apache2,chmod,chown,Php,Apache2,Chmod,Chown,我想这个问题应该很简单,但是在网上搜索了很多遍后,我找不到答案,所以我决定在这里提问 我的网站上有一个使用php的文件上传程序。上载文件的文件夹具有777 chmod。我还有一个php脚本来列出该文件夹中的文件。我需要的是允许php上传和浏览该文件夹上的文件,但不允许人们这样做。我设想的唯一解决方案是将该文件夹发送给另一个不同于默认值的用户,这样我就可以稍后在filezilla中使用chmod,并且只允许所有者这样做,这样人们就可以通过php脚本的输出看到文件,但如果他们导航到该文件夹,则不会看

我想这个问题应该很简单,但是在网上搜索了很多遍后,我找不到答案,所以我决定在这里提问

我的网站上有一个使用php的文件上传程序。上载文件的文件夹具有777 chmod。我还有一个php脚本来列出该文件夹中的文件。我需要的是允许php上传和浏览该文件夹上的文件,但不允许人们这样做。我设想的唯一解决方案是将该文件夹发送给另一个不同于默认值的用户,这样我就可以稍后在filezilla中使用chmod,并且只允许所有者这样做,这样人们就可以通过php脚本的输出看到文件,但如果他们导航到该文件夹,则不会看到

我正在使用Debian,apache2。我想知道我能做什么

为了让它更完美,我的目标是:允许php上传、读取、写入和执行该文件夹中的文件,但不允许客户端,除非他们使用我的php脚本


提前感谢

将您正在谈论的所有文件放在它们自己的目录中。将
.htaccess
文件添加到该目录。
.htaccess
的内容应该是
deny from all

这将阻止任何用户手动访问文件,因为访问将被阻止。您的PHP脚本仍然可以浏览文件的内容,并将其作为具有正确内容类型的附件提供


有关如何在PHP中提供下载文件的更多信息,请阅读以下内容:

包括web服务器在内的所有服务都在安全上下文中运行,该上下文是操作系统中的一个帐户,例如apache开始在apache组中使用apache用户。将模式和所有者更改为此用户和组就足够了。除非有很好的解释,否则不要将目录chmod到777。使用此技巧,web服务进程只能在该目录中读取、写入和执行


同样,如果您不希望浏览器客户端看到(读取)该目录的内容,则应拒绝该目录上的列表。我认为默认情况下是禁用的。

您能解释一下“他们自己的目录”是什么意思吗?我尝试使用.htaccess文件,但我仍然可以从direct link下载这些文件。我不想以任何方式提供下载服务。我只想用一个php脚本(已经完成)显示该文件夹上的内容。但是我不希望任何人能够以任何方式下载它们,只是为了上传。如果您将
htaccess
文件放在一个名为
deny from all
的目录中,该目录中的所有文件都将不再可访问。很抱歉,坚持这样做对我不起作用,我在我的文件所在的文件夹中添加了.htaccess,并添加了“deny from all”没有引号,但我仍然可以从Browser下载文件检查apache设置以确保它正在查找htaccess文件并允许覆盖。请参见此处了解详细信息:很抱歉接受您的回答太晚,启用覆盖花了很长时间,但您的回答对我很有帮助,因此我接受:)Thx for Help我的目录是:mapuploader,所以我应该只是:chown-R apache mapuploader?:我现在明白了。对您应该首先将其发送给apache用户。chown-R apache mapuploader/我的问题是:我应该让哪个用户成为该文件夹的所有者?“apache”用户不存在,我使用top命令查看进程所有者,在apache2进程上有两个所有者:root和www数据。我尝试了这两种方法和www数据,它总是公共的(比如让每个人都拥有),根php无法读取itRead httpd.conf文件。在it.httpd.conf文件中指定的用户为空。在httpd.conf的同一个文件夹中,我发现了一个文件名为“envars”,在这里我找到了下一个:export APACHE_RUN_USER=www data export APACHE_RUN_GROUP=www data,但正如我前面提到的,如果我使用www data,就好像是公开所有者一样