我的主机为我提供了两个文件夹供我使用,一个/home/public/
用于存放页面,/home/private/
另一个用于个人使用。我希望 PHP 创建一个文件,该文件只能由我在机器上读取,但不能由互联网上的其他人读取。将文件放在公共文件夹中会导致此问题。我曾考虑将文件归 apache 组所有,但我不是该组的成员。如果我可以将文件放在我的私人目录中,那就太好了,但可以理解的是,当我尝试写入其中的文件时,会出现访问错误。我该怎么办?
答案1
许多包需要 html 或公共层次结构内的程序/脚本可访问的子目录。
由于您(我假设)正在使用 suPHP 或 equiv 在共享服务上运行,因此这将仅运行所有者 UID 中的脚本,因此不可用。我采用了一个非常简单的约定:如果任何文件或文件夹名称以 _ 或 . 开头,则禁止通过 URI 进行访问。这是一条简单的规则,我将其放在任何.htaccess
文件中
SetEnvIf Request_URI "(^_|/_|^\.|/\.)" forbidden
<Files *>
Order allow,deny
Allow from all
Deny from env=forbidden
</Files>
另一种方法是使用 RewriteRule:
RewriteRule (^_|/_|^\.|/\.) - [forbidden]
这样做的好处是,您可以对任何希望在脚本中访问的包含或数据目录采用这种极其简单的约定,但不要不是希望它们可以通过 URI 浏览。
脚注
我对您的陈述有些困惑:
如果我可以将文件放在我的私人目录中,那就太好了,但可以理解的是,当我尝试写入其中的文件时会出现访问错误。
这是否是服务提供商的 UID 拥有 /home/private/ 而您只能通过 GID 进行读取访问的滑稽现象之一?我的 ISP 也使用相同的方法转储日志文件之类的内容。我可以读取但不能写入或删除。这就是我使用的原因/public/_private
。抱歉使用了矛盾的说法。