我有一个config.php文件,我只是创建一个包含所有框架配置的大型数组。数据库源字符串之类的东西比如“mysql:host = localhost; dbname = mydb”(什么叫做btw?)和用户名+密码用于DB。我担心这是:
那么PHP专家如何做到这一点?
答案 0 :(得分:12)
如果你有一个www
,httpdocs
或public_http
文件夹或类似的东西,你的php应用程序所在的位置,那么最好把配置文件放在那个文件夹,只需像这样访问它:
include "../config.php";
没有FTP访问权限,没有人可以访问该文件,因此与在应用程序文件夹中使用它相比,它相对安全。
如果您没有这样的文件夹,则可以创建一个文件夹,并在根目录中创建.htaccess文件,从而将所有请求重定向到该文件夹。有很多不同的方法可以做到这一点,但这是一个不同的问题。
答案 1 :(得分:6)
我将它存储在纯文本ini样式配置文件中,通常位于Web根目录之上,以便不允许用户访问它。在可以访问的情况下,我通常会有一个带有deny from all
的.htaccess文件,以防止对它的所有访问。
将其存储在用户可访问的PHP文件中应该没问题,但这并不理想。如果服务器正确处理PHP文件,即使人们可以访问该文件,他们也无法访问这些值,因为他们只是获取输出(没有)。当然有这个问题,(见评论) 使用PHP文件是我用过的PHP项目(FOSS和商业用途)最常用的方法。他们中的大多数都没有将它们存储在Web根目录之上。对于任何稳定的设置,将配置文件存储在Web根目录之上的表面非常简单,尽管给定Murphy's law ,如果可以(那或使用它)值得做.htaccess或服务器的equilivent拒绝用户访问目录)
答案 2 :(得分:5)
大多数人都这样做,但您也可以尝试其中一些解决方案:
使用.htaccess:
限制对配置文件的访问< Location /config.php> 命令拒绝,允许 拒绝所有人 < /地点>
使用.ini文件和parse_ini_file功能(这本身并不是一个真正的解决方案,但可以与其他人合并)
答案 3 :(得分:3)
为什么要存储数据库用户名& “config.php”中的密码不正常?只要我知道,此文件中的数据无法公开显示。
E.G。
<?php
$DB_User = "amindzx";
$DB_Pass = "Something";
// connect to DB and so on.
?>
除非黑客能够访问您的FTP。
答案 4 :(得分:1)
为什么持有简单的config.php文件而没有任何证券是愚蠢的?即使程序员找到这个文件,他也无能为力,因为像amindzx说的那样“这个文件无法公开显示”。或者我错了?
答案 5 :(得分:1)
使用数据库或支付网关凭据等敏感信息,当我控制服务器时,我想在我的apache虚拟主机配置中添加以下行:
SetEnv DB_USER "myuser"
SetEnv DB_PASS "mypass"
在PHP中,您可以使用$ _SERVER ['DB_USER']访问它们。你可以使这个配置文件只能由root读取,你永远不能对php在运行时访问的文件做这个。一个警告:确保你禁用php_info并且不要用像print_r($ _ SERVER)那样愚蠢的东西来暴露这些变量。 (其中大部分是here的释义或被盗。)
对于非敏感配置,我喜欢做一个充满常量的类,这类似于你的设置,但我喜欢它的OOP-ness。
class Application
{
const CONTACT_EMAIL = "me@mysite.com";
}
usage:
$contactEmail = Application::CONTACT_EMAIL;
答案 6 :(得分:0)
我通常也会在config.php中存储设置,例如数据库连接设置,文件路径等。