web-dev-qa-db-ja.com

Symfony 3.4でコントローラーの環境パラメーターを取得するにはどうすればよいですか?

Symfony3.4アプリケーションのdev環境で、資格情報を環境変数として保存しようとしています。私はそれを機能させることができず、何が欠けているのか理解できません。これは私が持っているものです:

app\config\.envには、次のようにAPIキーが定義されています。

GOOGLE_DEVELOPER_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

app\config\services.ymlにあります:

parameters:
    google.developer.key: "%env(GOOGLE_DEVELOPER_KEY)%"

私のコントローラーの1つで、このパラメーターを次のようなオブジェクトに渡したいと思います。

    $client = new \Google_Client();
    $client->setDeveloperKey($this->getParameter('google.developer.key'));

私には、そのセットアップは問題ないように見えますが、実行しようとすると、次のメッセージが表示されたEnvNotFoundExceptionが表示されます。

環境変数が見つかりません:「GOOGLE_DEVELOPER_KEY」。

キーをapp\config\services.ymlに直接入れると、問題なく機能します。

parameters:
    google.developer.key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

(しかし、さまざまな理由から、それは私が望んでいることではありません。)

devキャッシュをクリアし、Webサーバーを再起動し、関連するSymfonyドキュメント(私は思う)を読みましたが、運がありませんでした。ステップが足りないと思いますが、それがどうなるかわかりません。ヒントをいただければ幸いです。

4
ACJ

Symfony3.4は.envファイルを自動的にロードしません。ファイルをロードするには、app_dev.phpを変更する必要があります。

use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');
4
Francesco Abeni

コントローラでGoogle_Clientを初期化し、サービスコンテナを使用しないのはなぜですか?

参照: https://symfony.com/doc/3.4/service_container.html

その開発者キーを、キーdeveloper_keyを構成に持つ配列で渡すことができます。

0
Shivella

Symphony v3.4 環境変数に関するドキュメント Webサーバーを使用して環境変数を構成することをお勧めします。

私のインストールはSymfonyv4であり、環境変数の構成に/.envファイルを使用しているため、これをテストできませんでした。

うまくいけば、これは何らかの形で役立ちます。

0
Gimsly