.envファイルには次のものがあります。
IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw
次に、コントローラーでそれらを使用したいと思います。私はこれを試しましたが、結果はありません:
$hostname = config('IMAP_HOSTNAME_TEST');
$ hostname変数はnullです。コントローラーでこれらの構成変数を使用するにはどうすればよいですか?
で試してみてください
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
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」が続くことを希望します
過去に言われたことを単純化するために、答えを追加すると思いました。設定ファイルのみが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
ファイルにも同じことが当てはまります。
.env
ファイルにリストされているすべての変数は、アプリケーションがリクエストを受信すると、$_ENV
PHPスーパーグローバルにロードされます。 チェックアウトlaravel構成ページ
$_ENV['yourkeyhere'];
InController
$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');
blade.viewで
{{$_ENV['IMAP_HOSTNAME_TEST']}}
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'
この形式で使用できます(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
このように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');
構成変数を構成ファイルに入れることをお勧めします。
あなたの場合、変数をconfig/mail.phpのように入れることをお勧めします
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
そしてそれらを参照する
config('mail.imap_hostname')
最初に。envファイルで設定変数値を取得しようとし、。envファイルで変数値が見つからなかった場合、変数値を取得します- config/mail.php