国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman 使啟動(dòng)命令支持啟用不同環(huán)境

Caesar-Tang

webman 通過啟動(dòng)命令啟用開發(fā)或生產(chǎn)環(huán)境

很多時(shí)候,我們都會(huì)把關(guān)鍵信息放在一處進(jìn)行配置,如:通過 .env 來配置 app_debug 開關(guān)或數(shù)據(jù)庫信息等,方便管理及部署。
我們通常有兩種或多種環(huán)境用于開發(fā)或生產(chǎn),并在部署時(shí)使用對應(yīng)的配置文件。
但如果我們只用一個(gè)配置文件,并期望在啟動(dòng)命令中通過輸入?yún)?shù)的方式,來決定啟用開發(fā)還是正式環(huán)境,該如何處理呢?下面給大家分享下自己的方法,僅供參考。

一. 方案優(yōu)勢

1. 方便 在一個(gè)配置中使用多個(gè)環(huán)境
2. 方便 在啟動(dòng)時(shí)啟用某個(gè)環(huán)境
3. 同樣適用于 docker 和 supervisor 部署

二. 方案劣勢

1. 需要修改框架的原始文件(start.php)
2. 不適用于 windows 上的 php windows.php 命令

三. 解決方案

1. 安裝 Env 環(huán)境變量組件
composer require vlucas/phpdotenv
2. 項(xiàng)目根目錄新建.env文件,并增加你的配置,如:

截圖

3. 修改配置處的引用,注意某些區(qū)別環(huán)境的配置,如:

服務(wù)配置:
截圖
應(yīng)用配置:
截圖

4. 修改框架的原始文件(start.php),將命令行中的變量寫入環(huán)境變量:
// 解析命令行啟動(dòng)參數(shù)
foreach ($argv as $key=>$value) {
    // 寫入環(huán)境變量
    if( $value==='-e' && array_key_exists(($key+1), $argv) && str_contains($argv[($key+1)], '=') ) {
        putenv($argv[($key+1)]);
    }
}

截圖

5. 修改框架的原始文件(windows.php),將命令行中的變量寫入環(huán)境變量:
// 解析命令行啟動(dòng)參數(shù)
foreach ($argv as $key=>$value) {
    // 寫入環(huán)境變量
    if( $value==='-e' && array_key_exists(($key+1), $argv) && str_contains($argv[($key+1)], '=') ) {
        putenv($argv[($key+1)]);
    }
}

截圖

6.通過 -e 命令來啟用開發(fā)或正式環(huán)境:
測試:php start.php start -e APP_ENV=DEV
正式:php start.php start -e APP_ENV=PROD

截圖
截圖

四. 總結(jié)

流程上大致以下步驟:
1. 通過 .evn 的 APP_ENV 來區(qū)別開發(fā)環(huán)境
2. 在框架的 start.php 及 windows.php 中,獲取命令行上的 -e 參數(shù)并寫入環(huán)境變量
3. 寫入的環(huán)境變量,會(huì)覆蓋掉 .env 中的配置
實(shí)際上,通過該方式,可以覆蓋 .env 中的所有配置。該方案在 windows 及 linux 均已測試。使用 docker 還是 supervisor 部署,是一樣的。
3488 3 10
3個(gè)評論

askuiop

好像運(yùn)行 composer update , 就會(huì)重新生成 start.php , 之前的修改就會(huì)丟失, 怎么辦 ?

  • Caesar-Tang 2023-11-16

    執(zhí)行 composer update,會(huì)更新框架及所有的包,這種情況下,只能再重寫 start.php 了。另外,為了避免不必要的風(fēng)險(xiǎn),建議盡量限制版本約束,以避免意外更新到不兼容的版本。

  • lsmir2 2024-05-14

    用git 先提交.

    composer update
    git restore .

今天不抽煙

app.debug 設(shè)置為 getenv(getenv('APP_ENV') . '_APP_DEBUG')
讀取的值不生效

  • 暫無評論
lsmir2

可以不用寫在start.php 文件 可以寫在 config/server.php 文件 寫個(gè)初始化接口 放在server.php里加載即可

  • 暫無評論

Caesar-Tang

750
積分
0
獲贊數(shù)
0
粉絲數(shù)
2022-03-28 加入
??