![](/img/trans.png)
[英]Nginx fpm Laravel container inside kubernetes not picking up the environment variables
[英]No environment variables are available via PHP-fpm+nginx
我嘗試通過以下方式修改 php.ini:
variables_order = "GPCSE"
register_globals = On
但是所需的PATH
變量既不在$_ENV
也不能通過getenv('PATH')
。
我在Ubuntu 10.04上運行Nginx + PHP-FPM 。
注意:在控制台中執行以下命令會得到正確的結果:
php -r "echo getenv('PATH');"
我猜PATH
是 bash 的環境變量,但只要 php-fpm 不通過 bash 啟動,它就沒有必需的變量。 有什么辦法可以包含它們嗎?
謝謝。
更新#1 :作為臨時解決方案,我發現 PATH 變量存儲在“/etc/environment”文件中。 所以我只是從那里閱讀它。 如果有人需要代碼:
preg_match('/^(PATH)="?([^"]+)"?$/i', file_get_contents('/etc/environment'), $match);
putenv($match[1]."=".$match[2]);
我在將我的 OwnCloud 安裝升級到 8.1 版時遇到了這個問題。
他們在他們的文檔中描述了一個修復
摘要是:在 php5-fpm 配置文件夾中找到www.conf
文件(對於 Ubuntu,這是/etc/php5/fpm/pool.d/www.conf
)並取消注釋所需的 env[PATH] 行。
可選擇使用php -r "echo getenv('PATH');"
的輸出更新變量的內容
默認情況下, PHP-FPM 會清除環境變量(來自www.conf ):
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
您可以取消注釋最后一行以將clear_env
設置為no
,但如果您願意,您可以只設置所需的環境變量:
env[PATH] = $PATH
您可以通過包含路徑指定它: http : //www.php.net/manual/en/ini.core.php#ini.include-path
您可以在 php.ini 中指定它(盡管您可能需要一個特定的路徑而不是包含所有內容)
include_path=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/fo ta/Development/adt -bundle-linux-x86_64-20130917/sdk/platform-tools"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.