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