簡體   English   中英

連接到數據庫取決於主機

[英]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
}

你可以這樣做:

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

一個好的方法是僅將數據庫憑據存儲在應該使用它們的特定環境中。

因此,您可以在本地和遠程服務器上都創建一個db.credentials.php文件。 其內容將分別不同,但類似以下內容:

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

然后,您只需在php代碼中獲取該文件:

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

您可以檢查服務器名稱以查看它是否是本地主機,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM