摘要:原文地址通過加載環境變量并且能夠自動的通過和自動調用這是一個版本為什么是你不能在代碼中存儲任何的敏感賬號數據存儲在環境中存儲配置是的一項規則在部署中可能變化的所有的內容諸如數據庫認證或者第三方服務的認證應該從代碼中剝離出來也就是環境變量的
原文地址:PHP dotenv
通過 .env 加載環境變量并且能夠自動的通過 getenv(), $_ENV 和 $_SERVER 自動調用.
這是一個PHP版本 Ruby dotenv.
為什么是 .env?你不能在代碼中存儲任何的 敏感/賬號 數據. 存儲 在環境中存儲配置 是 12-factors的一項規則. 在部署中可能變化的所有的內容 – 諸如數據庫認證或者第三方服務的認證應該從代碼中剝離出來.也就是環境變量的概念.
廣義上來說, 一個 .env 文件是加載自定義配置的一個簡單的方法, 這樣你的應用不需要修改 .htaccess 文件或者 Apache/nginx 虛擬主機. 這意味著你不需要編輯項目之外的任何文件,并且所有的環境變量都配置完整了, 無論你運行在 Apache, Nginx, CLI 還是 PHP 5.4 上內建的web服務器上. 這是一個所知的設置環境變量最簡單的方法, 你會喜歡上它的.
無需在 Apache 或者 Nginx上額外配置虛擬主機配置
無需在 .htaccess 中添加 php_value 值
方便移植和共享 ENV 環境變量值
兼容服務器內置的服務器和 CLI 運行器
使用 composer 安裝curl -s http://getcomposer.org/installer | php php composer.phar require vlucas/phpdotenv使用方法
.env 文件通常不包含在版本控制內, 它可能包含敏感的 API Key 或者 密碼. 所有需要環境變量定義(不敏感的定義)的項目都需要創建一個 .env.example 文件, 這個環境變量包含他們自己定義的環境變量或者聯合開發包含的環境變量. 項目合作開發者可以獨立的復制 .env.example 并且重命名為 .env , 并且修改為正確的本地環境配置, 存儲密碼key或者提供他們必要的值. 在這個使用方法中 .env 文件應該添加到 .gitignore 文件中并且永遠不會被項目的合作者簽入/簽出. 這個方法確保里邊沒有敏感的 API Key 或者 密碼在版本控制中出現從而減少了安全風險. 并且開發環境中的配置永遠不會告知合作開發者.
添加配置到根目錄下的 .env 文件, 確保 .env 文件添加到 .gitignore 從而不會簽入到 CVS
S3_BUCKET=dotenv SECRET_KEY=souper_seekret_key
現在創建一個 .env.example 文件, 并且簽入到項目中. 這里配置和環境變量你需要設置的可以留空或者設置一些無關緊要的數據. 這個方法告知人們這些數據是必須的, 但是不會提供真正環境中的數據.
S3_BUCKET=devbucket SECRET_KEY=abc123
你可以使用以下一行代碼加載應用中的 .env 文件:
Dotenv::load(__DIR__);
所有定義的變量都可以通過 getenv 方法訪問到, 并且也可以使用超全局變量$_ENV 和 $_SERVER訪問到.
$s3_bucket = getenv("S3_BUCKET"); $s3_bucket = $_ENV["S3_BUCKET"]; $s3_bucket = $_SERVER["S3_BUCKET"];
你同樣可以使用框架的 Request 類來訪問這些變量(如果你使用框架)
$s3_bucket = $request->env("S3_BUCKET"); $s3_bucket = $request->getEnv("S3_BUCKET"); $s3_bucket = $request->server->get("S3_BUCKET");嵌入變量
在一個變量中嵌入一個環境變量是可以的, 這樣對于減少重復很有用.
使用 {$…} 來包裹環境變量 e.g.
BASE_DIR=/var/webroot/project-root CACHE_DIR={$BASE_DIR}/cache TMP_DIR={$BASE_DIR}/tmp不可變
默認來說, Dotenv 認為環境變量是不變的. 這就是說一旦設置就不能變更.
你可以用以下函數將環境變量設置為可變的
Dotenv::makeMutable();
… 同樣你也可以使用以下函數讓其不再可變
Dotenv::makeImmutable();要求變量必須設置
使用 Dotenv, 你可以指定這個 ENV 變量必須設置, 如沒有設置則會拋出異常. 這對于人們是非常有用的, 如果程序缺少這個變量就不能運行.
使用以下語法:
Dotenv::required("DATABASE_DSN");
或者數組來定義:
Dotenv::required(array("DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"));
如果 ENV 變量缺少, Dotenv 將拋出一個 RuntimeException :
Required environment variable missing or value not allowed: "DB_USER", "DB_PASS"允許的值
你可能看到了上邊的異常信息, 你可以設定一個可能范圍值, 讓你的環境變量遵守這個規則
Dotenv::required("SESSION_STORE", array("Filesystem", "Memcached"));
同樣的, 如果環境變量不在這個列表里, 你會收到一個相似的異常信息:
Required environment variable missing or value not allowed: "SESSION_STORE"注釋
可以使用 # 來注釋字符. E.g.
# this is a comment VAR="value" # comment VAR=value # comment使用注釋
當一個開發者克隆你的代碼庫. 他們會收到一個額外的手冊 一次性步驟 來手動的復制 .env.example 并且重命名為 .env 并且追加上他們自己的值(或者從其他開發者哪里獲取到其他敏感值).
phpdotenv 被用來建立開發者環境但是不應該用在生產環境下. 在生產環境下, 需要設置真實的變量而不必每次使用請求的時候都使用 .env 文件進行重載.
這個可以通過自動化部署工具來實現, 例如: Vagrant, chef, Puppet, 或者手動的通過云主機來實現, 例如: Pagodabox, Heroku.
貢獻Fork it
創建分支(git checkout -b my-new-feature)
改動
運行測試, 如果需要, 添加新配置 (phpunit)
提交 (git commit -am "Added some feature")
推送到分支 (git push origin my-new-feature)
創建新的拉取請求
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25734.html
摘要:批量生成優惠券碼并寫入數據表說明這篇文章主要講的是個人工作中遇到的解決問題的方法而非程序寫的多優美。 python 批量生成優惠券碼并寫入數據表 說明:這篇文章主要講的是個人工作中遇到的解決問題的方法,而非程序寫的多優美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做?優惠券碼直接在用的時候用程序直接生成不就OK了嗎? 好,那么問題來了,我們的系統需要一次性發...
摘要:批量生成優惠券碼并寫入數據表說明這篇文章主要講的是個人工作中遇到的解決問題的方法而非程序寫的多優美。 python 批量生成優惠券碼并寫入數據表 說明:這篇文章主要講的是個人工作中遇到的解決問題的方法,而非程序寫的多優美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做?優惠券碼直接在用的時候用程序直接生成不就OK了嗎? 好,那么問題來了,我們的系統需要一次性發...
首先composer安裝 composer require vlucas/phpdotenv 接著看phpdotenv官方文檔 https://packagist.org/package... 示例 $dotenv = DotenvDotenv::create(__DIR__, .env); $my_env = $dotenv->load(); var_dump($my_env);
摘要:前言作為一個愛好者讓我寫我本來是拒絕的,但是呢,拒絕了誰給你工資啊那怎么辦呢,既然是基于的組件化開發的,那么能不能把中的功能引入到中呢環境問題測試版和正式版的數據庫一般是不同的那么如何方便的切換呢之前我才用的方法是看當前運行的文件夾是哪個就 前言 作為一個 laravel 愛好者讓我寫 tp3.2 我本來是拒絕的,但是呢,拒絕了誰給你工資啊那怎么辦呢,既然 laravel 是基于 co...
摘要:發布于年月,從那時起大約每六個月會發布一次的新版本。將會支持相對較新的來管理項目中的環境文件。棄用和輔助函數所有的和全局輔助函數都已棄用,將在中刪除。將返回更干凈的相同值。和通知和通知已從主項目中刪除,并提取到第三方軟件包中。 showImg(https://segmentfault.com/img/remote/1460000018269419?w=585&h=400); 無論是從零...
閱讀 1751·2023-04-25 22:42
閱讀 2202·2021-09-22 15:16
閱讀 3486·2021-08-30 09:44
閱讀 485·2019-08-29 16:44
閱讀 3304·2019-08-29 16:20
閱讀 2512·2019-08-29 16:12
閱讀 3387·2019-08-29 16:07
閱讀 666·2019-08-29 15:08