我有一台使用 ubuntu 服务器,带有 apache2 和 php。
我想设置一个包含 php 文件的目录,该文件对互联网可见,并且在其中有一个私有目录,除了该 php 文件之外,没有人(apache)可以访问它。
我怎样才能做到这一点?
答案1
如果您可以安排 PHP 以不同于普通 Apache 的用户身份执行,那么这将很容易:您将私有目录设置为 PHP 用户拥有并将权限设置为 700。
或者,如果 PHP 解释器必须以与 Apache 服务器相同的用户身份运行(通常如此),则可以使用 Apache 配置指令(在文件中.htaccess
或其他方式中)来指定 Apache 决不能从该目录提供任何内容。在“主”Apache 配置文件中执行此操作的方法如下:
<Directory "/your/private/directory">
Require all denied
</Directory>
在文件中,只需单独.htaccess
使用该行:Require
Require all denied
它将自动应用到文件.htaccess
所在的目录。
PHP 解释器无需通过 Apache 即可访问文件系统,因此它将能够访问私有目录。然后,您只需将私有目录设置为 Apache 服务用户所拥有,并赋予其 700 的权限。