使文件只能访问PHP

时间:2016-04-10 07:10:15

标签: php apache2 privileges access-control

我想在特定目录中创建只能访问php的文件,具体情况是,我有一个包含一些子文件夹的文件夹,每个子文件夹包含很多文件(可以是每种类型的文件,如图像,代码,可执行文件等)。现在我构建了一个脚本,以便能够下载文件,这是有效的,但也可以转到server.com/folder/subfolder/img.jpg查看图像。这是我不想允许的。

我有什么方法可以做到这一点吗?

PS:我正在使用apache2和PHP7运行Ubuntu 14.04服务器。

修改:问题可能与链接的问题重复,但没有答案适用于我,.htaccess不会更改任何内容,文件夹应保留在原位。

2 个答案:

答案 0 :(得分:0)

如果您想使用文件系统解决这个问题,您必须认识到系统方面存在一些重大限制。例如,您的PHP脚本无法作为与Apache相同的用户运行,因此无法在Apache中运行。

如果这是一个硬性要求,我要做的第一件事就是通过fcgi守护进程而不是Web服务器运行PHP脚本,让它作为单独的用户运行,并相应地收紧文件权限。

答案 1 :(得分:0)

这可以解决问题:

RewriteEngine On
RewriteBase /yourwebsite/

RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]

RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

ErrorDocument 404 /yourwebsite/404.php

将此内容放入您的.htaccess文件中,当有人访问您的网站时,他们只会看到公用文件夹中的内容,但是php仍然可以访问公用文件夹之外的所有内容,只有图像和CSS必须位于公用文件夹中,否则用户看不到它,因为他没有权限