用于保存在文档树中使用require检索的文件的文件夹

时间:2011-10-19 13:41:26

标签: php path require

我正在构建一个基于php的网站,我想问一下将哪些文件放在用require语句检索的文件中,这样就无法通过浏览器访问用户。 (例如连接到我的数据库的php文件)

编辑实际上我认为更好的方法是将它们放在公共根目录之外,因为apache教程说htaccess会有减速影响。它可以通过添加../来完成 例如require(“../ myFile.php”); (至少这在我的服务器上有效) 最好的问候

6 个答案:

答案 0 :(得分:1)

这取决于Web服务器配置。通常(或者至少在我目睹的所有情况下),您都有一个文档根目录,用户无法通过浏览器访问,其中包含所有公共材料的文件夹(通常称为 htdocs httpdocs ,public_html或任何类型。通常,您可以将PHP包含文件放在该根目录中,然后使用require("../include_file.php");来请求它们 但是,它取决于配置PHP是否可以包含公用文件夹之外的文件。如果没有, .htaccess 文件是您的最佳选择。

答案 1 :(得分:0)

用.htacces让它们安全!

Here's一个非常清晰的教程,用于使用密码保护文件。如果您不需要每个浏览器直接访问文件,或者只需要访问脚本,只需通过更改代码来完全阻止它们

<Files xy>
change this bit here
</Files>

  Order allow,deny
  Deny from all

然后你也不再需要你的htpassword文件了!

答案 2 :(得分:0)

如果您将这些文件放在网络服务器的文档根目录之外,则用户无法使用浏览器访问这些文件。

如果您使用apache,您还可以将这些文件放在不允许使用.htaccess文件访问的目录中。

最后一点,如果你的文件没有生成输出,用户就无法检查文件的内容。

答案 3 :(得分:0)

如果您的意思是源代码,那么它对用户是不可见的,如果您想要隐藏文件夹内容使用.htaccess指令选项 - 索引隐藏文件,如果您可以访问php源您的服务器配置是错误的并且它不解析php文件。

答案 4 :(得分:0)

您通常将它们放入无法通过Web服务器访问的目录中(文档或Web根目录之外)。有时称为“私人”目录。

然后,您可以在该路径中包含/要求该文件,因为PHP仍然可以访问这些文件。

另见:

答案 5 :(得分:0)

您需要将这些文件放在Web服务器上面向公众的文件夹之外。大多数(所有?)Web主机应该能够更改网站的文档根目录。

例如,假设您的所有文件均来自主机上的以下目录:/home/username/www/example.com/

这意味着互联网上可以看到驻留在该目录中的任何内容。如果您转到http://example.com/myfile.png,则会在/home/username/www/example.com/myfile.png处提供该文件。

您要做的是创建一个名为public的新目录,该目录将为您的文件提供服务,并将文档指向那里。完成后,http://example.com/myfile.png的请求将从/home/username/www/example.com/public/myfile.png提供(请注意此处的public目录)。现在,您网站上将无法显示位于example.com目录中的任何其他内容。您可以创建一个名为private的新目录,其中将存储敏感包含文件。

所以说你有两个文件:index.php,它们为你的网站服务,sensitive.php包含密码和那种性质的东西。你可以这样设置:

/home/username/www/example.com/public/index.php
/home/username/www/example.com/private/sensitive.php

index.php文件在互联网上可见,但sensitive.php不是。要包含sensitive.php,只需包含完整的文件路径:

require_once("/home/username/www/example/com/private/sensitive.php");

您还可以将应用程序根目录(网站文件的根目录,但不是公共可访问文件的根目录)设置为define,可能在某个配置文件中,并使用它,例如:< / p>

require_once(APP_ROOT . "sensitive.php");

如果您无法更改文档根目录,那么某些框架所做的是使用define来注意该文件不应该直接执行。您可以在任何文件中创建一个定义作为应用程序的入口点,通常只是index.php,如下所示:

if (!defined('SENSITIVE')) {
   define('SENSITIVE', 'SENSITIVE');
}

然后,在任何敏感文件中,检查它是否已设置,如果没有则退出,因为这意味着文件正在直接执行,而不是由您的应用程序执行:

if (!defined('SENSITIVE')) {
   die("This file cannot be accessed directly.");
}

此外,确保您的包含文件在公开可访问(实际上,即使没有)时,具有适当的扩展名,例如.php,以便Web服务器知道将它们作为PHP文件执行,而不是将它们作为纯文本提供。有些人使用.inc来表示包含文件,但如果服务器不能将它们识别为由PHP处理,那么任何关心外观的人都可以公开看到您的代码。这不好!为防止这种情况发生,请始终使用.php扩展名命名您的文件。如果您想使用.inc样式显示包含文件,请考虑改用.inc.php