【发布时间】:2011-05-12 11:40:37
【问题描述】:
我有一个 php 应用程序,我打算将关键设置保存在 .ini 文件中。但是,我认为可以通过网络访问该文件,那么放置它的“标准位置”在哪里?
【问题讨论】:
我有一个 php 应用程序,我打算将关键设置保存在 .ini 文件中。但是,我认为可以通过网络访问该文件,那么放置它的“标准位置”在哪里?
【问题讨论】:
您可以将其存储在文档/Web 根目录之上,或者专门阻止对其的访问。例如,PHP 应用程序的常见结构是:
application/
public/
public 是 Web 根目录 - 所以我通常将应用程序配置存储在我知道无法访问的 application/config 中。
另一种方法是使用 Apache 阻止它:
<!-- Block access to all .ini files -->
<Files ~ "\.ini">
Order deny,allow
Deny from all
</Files>
【讨论】:
“标准位置”是不受 apache 根目录影响的任何地方。例如,您可以将其放在/home/someuser/ 下或其他位置。
【讨论】:
将 .ini 文件放在 Web 根目录之外,或者如果您确实想将其保留在 Web 根目录下,请使用 .htaccess 保护它。
【讨论】:
如果您将 INI 文件放在 webroot/docroot 中,就可以访问它。
确保文件不能通过 docroot 访问是第一步。
【讨论】:
说实话,我会使用数据库。
但是,如果您真的想使用平面文件(例如 .ini),您可以将它放在一个目录中,并使用 .htaccess 阻止人们通过浏览器访问它。这样,您仍然可以通过 php 文件函数访问该文件。
为此,请在要保护的文件夹中创建一个名为 .htaccess 的文件(例如 ini/)
然后,在这个文件中放:
deny from all
现在无法通过浏览器中的 url 访问该文件夹。
【讨论】:
将配置放置在网络服务器不可读但应用程序可读的目录中。一般来说,你有一个特定的目录可以被网络服务器读取,例如“web”、“www”、“public”或“public_html”。确保将其放在该目录下的目录中。
这样,您的应用程序就可以读取文件:
$cfg = parse_ini_file(
realpath( dirname( __FILE__ ) . '/../' ) . '/config.php'
);
您的网络服务器不知道如何访问它,所以它是安全的。
【讨论】:
一个很好的例子是 Zend FW 或任何其他 php 框架。目录结构为:
application/config/config.ini
library/Zend/
public/index.php
从网络可以访问公共的地方
【讨论】: