Php 映射仅可供Web服务器访问,其他用户不可访问

Php 映射仅可供Web服务器访问,其他用户不可访问,php,ajax,chmod,Php,Ajax,Chmod,在我的网站上,我使用了很多包含,大多数包含应该只能由Web服务器访问,而不能由世界其他地方访问。因此,如果我在我的站点的页面中包含“./include_map/file.php”,那么世界上其他用户就不可能使用URL(“website.com/include_map/file.php”)进行请求。是否有可能使用include文件保护地图,以便只有Web服务器才能包含这些文件?PHP可以包含服务器硬盘上任何位置(以及非公共目录)的文件 例如,如果您的htdocs位于/var/www/domain/

在我的网站上,我使用了很多包含,大多数包含应该只能由Web服务器访问,而不能由世界其他地方访问。因此,如果我在我的站点的页面中包含“./include_map/file.php”,那么世界上其他用户就不可能使用URL(“website.com/include_map/file.php”)进行请求。是否有可能使用include文件保护地图,以便只有Web服务器才能包含这些文件?

PHP可以包含服务器硬盘上任何位置(以及非公共目录)的文件

例如,如果您的htdocs位于/var/www/domain/htdocs/中,您还可以包含位于/var/www/domain/include\u映射中的文件,而不允许Web服务器从其中读取(如果配置正确)

然后,您可以使用www.yourdomain.com//include_map/file.php测试访问该文件。 如果您仍然可以这样访问它,那么您的Web服务器配置需要注意防止其他人读取您的日志和其他内容

另一种方法是通过.htaccess或apache config拒绝对目录的访问。php仍然可以包含这些文件,而用户无法从internet访问它们

在apache配置中,您可以执行以下操作:

<Directory /inlcude_map>
   Order Deny,Allow
   Deny from all
</Directory>

.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

注意:.htaccess可能被禁用,或者它可能是另一个不支持.htaccess的Web服务器软件(例如light httpd或nginx),并且需要在服务器级别进行配置。我只是想指出,您永远不应该依赖.htaccess.Thank,这在使用al相对链接时工作正常,例如包含Javascript文件src=“./files/javascript.js“,但由于绝对联系,它会带来问题。我在我的https文件中使用绝对链接,我不确定我可以安全地使用https的相对链接,但我不这么认为……请检查https和http是否使用相同的文件。这应该适用于所有类型的URL。是的,它们使用相同的文件。。。。。但正如我所说,http使用相对链接。对于https,我必须使用绝对链接…不应该与使用常量的此方法相关。。。我需要一段代码;)
if(!defined('IS_APP')) {
   die('No direct access');
}

// your code here