在我的网站上,我使用了很多包含,大多数包含应该只能为web服务器访问,而不是为世界其他地方。因此,如果我包括"../include_map/file.php"在我的网站上的页面,它应该是不可能的请求与世界上的其他用户的URL("website.com/include_map/file.php")。是否有可能用包含文件来保护地图,以便只有web服务器可以包含这些文件?
PHP可以包含服务器硬盘上任何地方(也包括非公共目录)的文件。
例如,如果你的htdocs位于/var/www/domain/htdocs/,你也可以包含位于/var/www/domain/include_map的文件,而web服务器不允许从那里读取(如果配置正确)。,然后可以测试使用www.yourdomain.com/../include_map/file.php访问该文件。如果你仍然可以像这样访问它,你的web服务器配置需要一些注意,以防止其他人读取你的日志和其他东西。
另一种方法是通过.htaccess或apache config拒绝访问目录。PHP仍然可以包含这些文件,而用户不能从互联网访问它们。
在apache配置中,你可以这样做:
<Directory /inlcude_map>
Order Deny,Allow
Deny from all
</Directory>
在。htaccess文件中你可以写
Order Deny,Allow
Deny from all
.htaccess文件应该位于您想要保护的目录中。请咨询您的服务器提供商,以找出最适合您的方法。正如评论中所说,你必须首先找出。htaccess是否适合你。
你可以照zuloo说的做。如果你想让它在任何条件下都能工作,你可以为它使用一个常数。
文件包括:
define('IS_APP', true);
require_once('some/file/to/include.php');
// your code here
包含的文件:
if(!defined('IS_APP')) {
die('No direct access');
}
// your code here