根据主机连接到数据库

时间:2016-04-22 21:08:27

标签: php mysql

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

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

4 个答案:

答案 0 :(得分:4)

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
}

答案 1 :(得分:1)

你可以这样做:

$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
}

答案 2 :(得分:1)

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

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

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

然后你只需在php代码中找到该文件:

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

答案 3 :(得分:0)

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

if($_SERVER['SERVER_NAME'] == "localhost")
  $database_credentials = "local";
else
  $database_credentials = "remote";