2016-11-10 9 views
2

次のコマンドを使用してルートディレクトリに追加した環境変数にアクセスする必要があるSendGridのAPIを使用しようとしています。PHP/phpinfo()のシェルから環境変数を取得する方法

echo "export SENDGRID_API_KEY='YOUR_API_KEY'" > sendgrid.env 
echo "sendgrid.env" >> .gitignore 
source ./sendgrid.env 

これは私のルートフォルダにsendgrid.envファイルを作成しましたが、私の.gitignoreファイルにsendgrid.envを追加し、環境変数としてSENDGRID_API_KEYを追加しました。

しかし、PHPのgetenv('SENDGRID_API_KEY')キーは何も返さず、PHPのphpinfo()は環境変数としてSENDGRID_API_KEYを反映しません。

ここにはAPI installation instructionsがあります。

+0

あなたはPHPがあなたの 'sendgrid.env'ファイルを読むべきだと思うのはなぜ?あなたは 'putenv()'を使ってみましたか? –

+0

こんにちはルスラン。私はそれがすべきではないと私はそれがないことを知っていると思います。しかし、私は環境変数、つまり 'source/sendgrid.env'コマンドを読むことができるはずだと思います。私はAPIの指示に従っているだけで、putenvについては何も言わない。質問へのリンクを追加しました。この小さな部分を除いて、インストールはかなり短くて簡単です。 –

答えて

1

.envファイルを読むには、別のパッケージを使用する必要があります。環境へのファイルの内容をロードするためにDotenvクラスを使用して、彼らの公式サイト上でsampleがあります:クラスがどこから来るかまだ

<?php 

require 'vendor/autoload.php'; 
Dotenv::load(__DIR__); 
$sendgrid_apikey = getenv('YOUR_SENDGRID_APIKEY'); 

は、彼らも説明していません。どうやら、彼らはvlucas/phpdotenvパッケージをインストールする必要があることを意味します。このパッケージの現在のバージョンでは、load方法は、非静的であることに注意してください、(それ実際was static in early versions):

$dotenv = new Dotenv\Dotenv(__DIR__); 
$dotenv->load(); 
+0

* _ *私はかなり初心者です。私は決してそれを理解していないだろう....あなたはパッケージを参照せずにこれを解決するための他の推奨事項がありますか?そして、終わりに.envファイルを読んでいるなら、 'source/sendgrid.env'を実行するポイントは何ですか?私はあなたの援助に感謝します。 +1(とすぐに答えとしてマークされる)。 –

+1

便利だと思わない限り、環境変数をまったく使用する必要はありません。 Constructorは文字列を受け取ります。そのキーを取得する方法はあなた次第です。私は '.gitignore'に含まれている設定ファイルを使うのに使われています。別の方法は、シェルスクリプトが 'YOUR_SENDGRID_KEY = '123abcdef ...' php yourscript-calling-getenv.php'のようなシェルラッパーを作ることです。スクリプトが別のSAPI(FPMやApacheなど)で動作することになっている場合は、Webサーバーを調整して特定のenvを渡すことができます。すべてのPHPスクリプト、または特定のディレクトリ内のPHPスクリプトへの変数それはすべて特定のタスクに依存します –

+0

ありがとうルスラン。スーパーヘルプ。これはphpdotenvのreadmeの中では十分に面白いです」** phpdotenvは開発環境向けに作成され、一般的には本番環境では使用しないでください。実際の環境変数は.envファイルをロードするオーバーヘッドがないように設定する必要がありますリクエストごとに**。私はプロダクションコードだけを扱っているので、実際のキーを先に進めることができましたが、これはコラボレーション時にコードをより安全に共有するための貴重な教訓です。 –

関連する問題