web-dev-qa-db-ja.com

コントローラーで環境値を取得する

.envファイルには次のものがあります。

IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw

次に、コントローラーでそれらを使用したいと思います。私はこれを試しましたが、結果はありません:

$hostname = config('IMAP_HOSTNAME_TEST');

$ hostname変数はnullです。コントローラーでこれらの構成変数を使用するにはどうすればよいですか?

31
nielsv

で試してみてください

<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
53
Chetan Ameta

Laravel 5.3+では機能しません。以下のようにコントローラーから値にアクセスしようとすると、常にnullを返します

<?php

$value=env('MY_VALUE','default_value');

解決策:configフォルダー..say values.phpにファイルを作成し、以下のようなコードを記述する必要があります

values.php

<?php

return [

    'myvalue' => env('MY_VALUE',null),

    //add other values as you want

]

次のコードでコントローラーの値にアクセス

<?php


$value=\Config::get('credentials.myvalue')

「credentials」はファイル名の後にキー「myvalue」が続くことを希望します

39

過去に言われたことを単純化するために、答えを追加すると思いました。設定ファイルのみがenv変数にアクセスできます-そして、それらを渡します。

手順1。)変数を.envファイルに追加します。

EXAMPLE_URL="http://google.com"

手順2。)configフォルダー内に任意の名前で新しいファイルを作成します。

config/example.php

ステップ3。)この新しいファイル内に、そのenv変数を含む、返される配列を追加します。

<?php
return [
  'url' => env('EXAMPLE_URL')
];

ステップ4。)「example」という名前を付けたため、構成「namespace」がexampleになりました。だから今、私のコントローラーでこの変数にアクセスできます:

$url = \config('example.url');

Tip-コントローラーの上部にuse Config;を追加する場合、バックスラッシュ(ルート名前空間を指定する)は必要ありません。すなわち。

namespace App\Http\Controllers;   
use Config; // Added this line

class ExampleController extends Controller
{
    public function url() {
        return config('example.url');
    }
}

---重要---サンプルを作成したら、必ずphp artisan config:cacheコンソールに入力してください。 phpファイル。構成ファイルと変数はキャッシュされるため、変更を加える場合はそのキャッシュをフラッシュする必要があります-変​​更/追加される.envファイルにも同じことが当てはまります。

17
Grant

.envファイルにリストされているすべての変数は、アプリケーションがリクエストを受信すると、$_ENV PHPスーパーグローバルにロードされます。 チェックアウトlaravel構成ページ

$_ENV['yourkeyhere'];
12
Clean code

InController

$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');

blade.viewで

{{$_ENV['IMAP_HOSTNAME_TEST']}}
3
Anandan K

in Laravel Controlller

public static function mail($param)
{
    //$_ENV['yourkeyhere'];
    $mailgunsecret = env('MAILGUN_SECRET');
    $mailguurl = env('MAILGUN_DOMAIN');

}

in Laravel Blade files

@if (env('APP_ENV')!='Production')
    Enviroment Test
@endif

must run this commands

php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear

例:ブレードのLaravel .env変数へのアクセス

APP_ENV=local
APP_KEY=////
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_GOOGLE_MAPS=////
APP_OVERHEID_IO=////

{{ env('APP_ENV') }} // returns 'local' 
{{ env('APP_URL') }} // returns 'http://localhost' 

コントローラーの環境値を取得

3
ng example

この形式で使用できます(Laravel 5.5でテスト済み)。私の場合、データベース接続のデータを取得し、コントローラーで使用します。

$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');

2番目のパラメーターはヌルにすることも、DB_USERNAMEchildがヌルの場合にデフォルトを設定することもできます。

.envファイルは同じにすることができます:

DB_Host=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password

DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild
2
Zarkys Salas

このようにenv変数にアクセスすることはできません。

あなたが書く.envファイルの中

IMAP_HOSTNAME_TEST=imap.gmail.com  // i am okay with this

次にconfigフォルダー内に、このファイルを使用してコーディングできるmail.phpがあります。メール機能を使用しているとき。別のファイルを使用することもできます。

return [

//..... other declarations
'imap_hostname_test' => env('IMAP_HOSTNAME_TEST'),

// config内の値も非表示にします

];

'config(を使用してコントローラーから変数を呼び出すことができます
configフォルダー内で使用しているファイルは何でも。そのファイル名(拡張子なし)+ '。'を使用する必要があります+ '変数名' + ')'現在のケースでは、次のように変数を呼び出すことができます。

$hostname = config('mail.imap_hostname_test');

mail.php内で変数を宣言し、変数名はimap_hostname_testであるためです。このように呼び出す必要があります。 app.php内でこの変数を宣言する場合は、呼び出す必要があります

$hostname = config('app.imap_hostname_test');
0
Rajib

構成変数を構成ファイルに入れることをお勧めします。

あなたの場合、変数をconfig/mail.phpのように入れることをお勧めします

'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')

そしてそれらを参照する

config('mail.imap_hostname')

最初に。envファイルで設定変数値を取得しようとし、。envファイルで変数値が見つからなかった場合、変数値を取得します- config/mail.php

0
Hamid Parchami