创建config.php的正确方法

创建config.php的正确方法,php,security,include,config,Php,Security,Include,Config,目前,我正在将config.php文件放在Apache服务器上的include文件夹中,这样我就可以方便地访问该文件,而无需编写目录路径。我认为这是一个好主意,因为它是安全的,无法从公共根文件夹外部访问 从来没有人告诉我如何创建config.php文件,所以我临时编了一个,但看起来可能是用了错误的方法。。(现在不太安全)。然后我开始搜索关于如何正确构建这些配置文件的教程,但每个教程都有自己的方法。。有些是通过使用数组实现的。。有些是通过定义配置变量来实现的。。其他人通过使用类。。可能没有正确的方

目前,我正在将config.php文件放在Apache服务器上的
include文件夹中,这样我就可以方便地访问该文件,而无需编写目录路径。我认为这是一个好主意,因为它是安全的,无法从公共根文件夹外部访问

从来没有人告诉我如何创建
config.php
文件,所以我临时编了一个,但看起来可能是用了错误的方法。。(现在不太安全)。然后我开始搜索关于如何正确构建这些配置文件的教程,但每个教程都有自己的方法。。有些是通过使用数组实现的。。有些是通过定义配置变量来实现的。。其他人通过使用类。。可能没有正确的方法,但我想要一个安全且功能强大的系统,我并不在乎它会有多先进

这是我当前的配置文件。。您应该很容易看到它在任何方面都不是那么安全,因为任何人都可能只是能够回显变量,然后读取连接

<?
$main_host = 'db01.server.local'; // There may be db02, db03 etc.
$main_psw = '********';
$main_host_end = '.server.local'; // makes it possible for me to connect to a different datastore only knowing the subdomain.

// ***    USERS    *** //
$w_user = 'w_user';
$xr_user = 'xr_user';
$r_user = 'r_user';
$w_server = 'w_server';
$w_db_admin = 'dbw_admin';

// ***    DATABASES    *** //
$db_accounts = 'accounts';
$db_server = 'server_setup';

// ***    DB ACCOUNTS    *** //
try {
    $w_accounts = new PDO("mysql:host=$main_host;dbname=$db_accounts", $w_user, $main_psw);
    $w_accounts->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

try {
    $r_accounts = new PDO("mysql:host=$main_host;dbname=$db_accounts", $r_user, $main_psw);
    $r_accounts->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

// ***    DB SERVER SETUP    *** //
try {
    $w_server = new PDO("mysql:host=$main_host;dbname=$db_server", $w_user, $main_psw);
    $w_server->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

try {
    $r_server = new PDO("mysql:host=$main_host;dbname=$db_server", $r_user, $main_psw);
    $r_server->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}


?>

所以。。直接问问题。创建config.php文件的正确方法是什么?我也真的希望其他人会觉得知道这些有用


编辑我还应该考虑到这可能不是全部。。我可能还有更多的联系要做。。不仅是
帐户
服务器_设置

首先,决不要在生产中回显异常消息,而是将它们放入可读的日志文件中

如果查看许多MVC框架,它们的php配置文件只包含一个数组,该数组在文件末尾返回


限制对这些配置文件的访问可以通过.htaccess和“拒绝所有人”来完成。

如果有人在您的项目中编写您不信任的代码,无论如何,您会遇到大麻烦。因此,回响变量绝对不是一个问题。所以,您唯一关心的是如何保护您的PHP配置,防止有人通过web浏览器访问它们。 为此,我建议将所有配置文件放入
configs/
目录,并添加
.htaccess
文件,其中包含以下内容:

Options -Indexes
<FilesMatch .*\.php$>
  order deny,allow
  deny from all
</FilesMatch>
选项-索引
命令拒绝,允许
全盘否定

配置文件应仅包含您环境的设置。所以我会将数据库创建从中移出。我之所以这样做,是因为我不想帮助程序员知道配置文件中的内容。。但我想这可能是不可能的?