根据主机连接到数据库


Connect to database depending on host

我想连接到我的数据库,具体取决于我是在本地主机上还是在线托管的Web应用程序上。但我不知道该怎么做。有人有一些想法或例子吗?

因为现在,每次将 Web 应用部署到主机并使用联机主机的数据库凭据时,我都必须注释掉我的代码行。

1) 检查超全局$_SERVER并检查代码是否在本地运行。

<?php 
if ($_SERVER["SERVER_ADDR"] === "127.0.0.1") {
  // Running on local development server
}

2) 设置并读取标识代码运行位置的环境变量

.htaccess

SetEnv MY_ENVIRONMENT "live"

在代码中:

<?php 
if (get_env("MY_ENVIRONMENT") === "live") {
  // Running in live environment
}

一个好方法是仅将数据库凭据存储在应该使用它们的特定环境中。

因此,您可以在本地和远程服务器上创建db.credentials.php文件。其内容将分别不同,但如下所示:

<?php
$databasename = "myDB";
$username = "me";
$password = "C0mpl3x P@55w0rd";

然后,您只需在 php 代码中获取该文件:

require_once("path/to/db.credentials.php");

你可以这样做:

$local = [
    'www.example.devlocal'
];
if (!in_array($_SERVER['SERVER_NAME'], $local)) {
      // Development server
} else {
      //Local server
}

或者您也可以通过服务器的 IP 地址进行检测:

$whitelist = array(
    '127.0.0.1',
    '::1'
);
if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
    // This is production server
}

您可以检查服务器名称以查看它是否是本地主机

,如下所示:
if($_SERVER['SERVER_NAME'] == "localhost")
  $database_credentials = "local";
else
  $database_credentials = "remote";