我有一个服务器使用Ubuntu的服务器,与Apache2和PHP。
我想用一个php文件设置一个目录,这个目录在互联网上是可见的,而且在它的内部是一个私有的目录,没有人(apache)可以访问它,除了php文件。
我怎样才能做到这一点?
如果您可以安排PHP以普通的Apache身份从不同的用户那里执行,那么这很容易:您将私有目录设置为拥有PHP用户和权限700。
或者,如果PHP解释器必须像Apache服务器一样以相同的用户身份运行,则可以使用Apacheconfiguration指令(以.htaccess文件或其他方式)指定Apache不得从该目录提供任何内容。 这是如何在“主”Apacheconfiguration文件中完成的:
<Directory "/your/private/directory"> Require all denied </Directory>
在.htaccess文件中,只需使用Require行:
Require all denied
它将自动应用于.htaccess文件所在的目录。
PHP解释器可以在不通过Apache的情况下访问文件系统,因此它将能够访问专用目录。 然后,您只需将专用目录设置为由Apache服务用户拥有,并且权限为700。