ArchLinuxの_APP_ENV
_ファイルで_/etc/environment
_のようないくつかの環境変数を定義しました。
printenv
と入力すると、表示されます。
この簡単なテストファイルを作成しました…_test.php
_
_<?php
var_dump(getenv('APP_ENV'));
var_dump(getenv());
_
_php test.php
_を実行すると、すべて問題なく、ENV変数が表示されます。
しかし、HTTP経由でファイルにアクセスしようとすると、envには何もありません。
もちろん、私は_/etc/php/php-fpm.d/www.conf
_の設定を変更して_clear_env = no
_を設定しました
これらは影響を受ける行です:
_; 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
_
また、_php-fpm
_とnginx
の両方のサービスを再起動しましたが、まだ環境には何もありません。スクリプトはbool(false)
を返します。
それで…何かが足りないのですか?
これは私のphp-fpmバージョンです:
_php-fpm --version
PHP 7.2.6 (fpm-fcgi) (built: May 26 2018 07:45:18)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
_
そして私のNginxバージョン
_nginx -v
nginx version: nginx/1.14.0
_
PHP-FPMコンテキストで環境変数にアクセスするにはどうすればよいですか?
どうもありがとう!
Printenvまたはphp test.phpと入力すると、環境変数が存在するため、それらが表示されます。
「HTTP経由でファイルにアクセスしようとすると... [your] envには何もありません」。正確には、環境変数が設定されていません。
なぜ違う行動を期待するのですか?/etc/environment、/ etc/profile、/ etc/bashrcなどのファイルは、シェルが使用されている場合にのみ読み込まれ、デーモンが実行されている場合は読み込まれません。