乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      PHP中環(huán)境變量的操作

       硬核項(xiàng)目經(jīng)理 2021-05-31

      PHP中環(huán)境變量的操作

      在 PHP 中,我們可以通過 phpinfo() 查看到當(dāng)前系統(tǒng)中的環(huán)境變量信息(Environment)。在代碼中,我們也可以通過兩個(gè)函數(shù),查看和修改相應(yīng)的環(huán)境變量信息。

      getenv() 獲取環(huán)境變量信息

      在不傳參數(shù)的情況下,我們可以通過 getenv() 這個(gè)函數(shù)獲得所有的環(huán)境變量信息。不過需要注意的是,在 CLI 環(huán)境和 SAPI 環(huán)境下它所返回的信息是不一樣的。

      print_r(getenv());

      // CLI
      // Array
      // (
      //     [USER] => zhangyue
      //     [PATH] => /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Applications/Wireshark.app/Contents/MacOS
      //     [LOGNAME] => zhangyue
      //     [SSH_AUTH_SOCK] => /private/tmp/com.apple.launchd.h3szqpYfSH/Listeners
      //     [HOME] => /Users/zhangyue
      //     [SHELL] => /bin/zsh
      //     [__CF_USER_TEXT_ENCODING] => 0x1F5:0x19:0x34
      //     [TMPDIR] => /var/folders/wj/t2z1cfhs0m9gq48krm8nc0vm0000gn/T/
      //     [XPC_SERVICE_NAME] => 0
      //     [XPC_FLAGS] => 0x0
      //     [OLDPWD] => /Users/zhangyue/MyDoc/博客文章
      //     [PWD] => /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source
      //     [SHLVL] => 1
      //     [TERM_PROGRAM] => vscode
      //     [TERM_PROGRAM_VERSION] => 1.45.1
      //     [LANG] => en_US.UTF-8
      //     [COLORTERM] => truecolor
      //     [VSCODE_GIT_IPC_HANDLE] => /var/folders/wj/t2z1cfhs0m9gq48krm8nc0vm0000gn/T/vscode-git-a282fa5813.sock
      //     [GIT_ASKPASS] => /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh
      //     [VSCODE_GIT_ASKPASS_NODE] => /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer)
      //     [VSCODE_GIT_ASKPASS_MAIN] => /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js
      //     [TERM] => xterm-256color
      //     [_] => /usr/local/bin/php
      //     [__KMP_REGISTERED_LIB_9282] => 0x1138dc0f8-cafece1d-libomp.dylib
      // )

      // SAPI Nginx
      // Array
      // (
      //     [USER] => zhangyue
      //     [HOME] => /Users/zhangyue
      // )

      如果 PHP 在諸如 Fast CGI 之類的 SAPI 中運(yùn)行,則此函數(shù)將始終返回由 SAPI 設(shè)置的環(huán)境變量的值,即使已使用 putenv() 來設(shè)置同名的本地環(huán)境變量。這個(gè)函數(shù)是有兩個(gè)參數(shù)的,不過它們都是選填的(PHP7以前必須填變量名)。第一個(gè)參數(shù)是變量名,也就是可以返回具體的某一個(gè)環(huán)境變量信息。而第二個(gè)參數(shù)如果設(shè)置為 true 的話,僅返回本地環(huán)境變量(由操作系統(tǒng)或 putenv() 設(shè)置)。

      echo getenv("HOME"), PHP_EOL;
      // /Users/zhangyue

      // Nginx
      print_r($_SERVER);
      echo getenv("REQUEST_METHOD"), PHP_EOL; // GET
      echo getenv("REQUEST_METHOD"true), PHP_EOL; // 

      在第二個(gè)參數(shù)不為 true 的情況下,我們可以通過 getenv() 獲得 \$_SERVER 、$_ENV 中的所有內(nèi)容,但是,如果第二個(gè)參數(shù)為 true 的話,那么類似于 Nginx 為我們添加的那些環(huán)境變量就無(wú)法獲取了。這就是第二個(gè)參數(shù)的作用,上面代碼中 REQUEST_METHOD 就是 Nginx 為我們添加的環(huán)境變量,所以第二條輸出語(yǔ)句就不會(huì)進(jìn)行輸出。

      putenv() 設(shè)置環(huán)境變量信息

      設(shè)置環(huán)境變量的函數(shù)就比較簡(jiǎn)單了,只有一個(gè)參數(shù),不過寫法是類似于 Linux 中環(huán)境變量的設(shè)置寫法。

      putenv("A=TestA");
      echo getenv("A"), PHP_EOL;
      echo getenv("A"true), PHP_EOL;

      對(duì)于 putenv() 的環(huán)境變量,getenv() 的第二個(gè)參數(shù)設(shè)置為 true 也是可以獲取到的。環(huán)境變量?jī)H存活于當(dāng)前請(qǐng)求期間。在請(qǐng)求結(jié)束時(shí)環(huán)境會(huì)恢復(fù)到初始狀態(tài)。

      設(shè)置特定的環(huán)境變量也有可能是一個(gè)潛在的安全漏洞。safe_mode_allowed_env_vars 包含了一個(gè)以逗號(hào)分隔的前綴列表。在安全模式下,用戶可以僅能修改用該指令設(shè)定的前綴名稱的指令。默認(rèn)情況下,用戶僅能夠修改以 PHP_ 開頭的環(huán)境變量(例如 PHP_FOO=BAR)。注意:如果此指令是空的,PHP允許用戶設(shè)定任意環(huán)境變量!

      safe_mode_protected_env_vars 指令包含了逗號(hào)分隔的環(huán)境變量列表,使用戶最終無(wú)法通過 putenv() 修改。即使 safe_mode_allowed_env_vars 設(shè)置允許修改,這些變量也會(huì)被保護(hù)。

      所以,在 php.ini 中,默認(rèn)情況下 putenv() 是定義為危險(xiǎn)函數(shù)的,也就是在 disable_functions 中需要?jiǎng)h除掉這個(gè)函數(shù)才能正常使用,如果要使用 Composer 的話也必須要開啟這個(gè)函數(shù)才能正常使用。

      測(cè)試代碼:

      https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/PHP%E4%B8%AD%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E6%93%8D%E4%BD%9C.php

      參考文檔:

      https://www./manual/zh/function.putenv.php

      https://www./manual/zh/function.getenv.php

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多