47

私のシステムはUbuntuで、環境変数を に設定しました/etc/environment

CLIを使用してPHPスクリプトを実行している場合、環境変数が認識されます。/etc/environment

しかし、PHPスクリプトhttp://domain/test.php(つまりapache2handler ) を実行すると、まったく同じスクリプトが NULL を出力します。これは、環境変数/etc/environmentが読み込まれないことを意味します。

私が行った修正は変数を追加することで/etc/apache2/envvars、問題は解決しました。

しかし、これは 2 つの異なるファイルであるため、同期を維持する必要があります。

PHP / Apache/etc/environmentに(システム)から環境変数をロードして認識させるにはどうすればよいですか?

編集: 明確にするために、「PHP にロードされていない」と言うときは、変数/etc/environmentが に設定されておらず$_SERVER$_ENVgetenv()存在しないことを意味します$GLOBALS。つまり、「PHP にロードされません」。

4

4 に答える 4

1

最近、環境変数から値を取得し、PHP データ型に解析するためのライブラリを作成しました。このライブラリを使用して、環境変数を PHP データ型に解析し (integer、float、null、boolean へのキャストなど)、JSON 文字列などの複雑なデータ構造を解析し、コミュニティの貢献によりさらに多くのことを行うことができます。

ライブラリはこちらから入手できます: https://github.com/jpcercal/environment

環境変数を「/etc/environment」と「/etc/apache2/envvars」に入れ、Apache サーバーを再起動して環境変数を運用システムにロードします。

# source /etc/environment
# source /etc/apache2/envvars

環境変数から値を取得するには (環境 CLI、Apache、Nginx、PHP ビルトイン サーバーなどとは無関係)、次のようにします。

<?php
// ...
require "vendor/autoload.php";
// ...
var_dump(Cekurte\Environment\Environment::get("YOUR_ENV_VARIABLE_NAME"));

楽しめ。

于 2015-11-04T20:19:07.660 に答える
-6

.htaccess から環境変数を設定するためにのみ使用できると思います。

SetEnv greet hello

PHP:

print $_SERVER["greet"];
于 2012-11-26T16:02:53.420 に答える