2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPで.envを読む方法(失敗談含む)

Last updated at Posted at 2021-12-05

PHPで.envを読む方法

土日に暇だったので、素のPHPの学習をしていました。
普段は、Laravelというとても便利なフレームワークを使っていたので、
基礎的な部分が欠けていると思ったからです。

今回はPHPで.envを読み込むことにつまづいたので、記事にしようかなと思いました。

前提条件:
PC: MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) インテルチップ
MacOS: BigSur v11.6
php: v8.0.12
composer: v2.1.9
vlucas/phpdotenv: v^5.4
エディタ:VScode

任意のディレクトリにindex.phpと.envを作成
ブラウザに「password」と表示されたら成功ということで、、、やっていきます。

index.php

<?php

var_dump();

.env

PASS=password

手順

1. Composerを使用して「vlucas/phpdotenv」インストール

phpで.envを読み込むためのライブラリです。
Composerでインストールすると楽です。
公式のGithub: https://github.com/vlucas/phpdotenv

composer require vlucas/phpdotenv

ルートディレクトリに、下記ができます。

  • vendor
  • composer.json
  • composer.lock

2. index.phpに追記

index.php
<?php
require './vendor/autoload.php';

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

vendorファイルを読み込む
require './vendor/autoload.php';

dotenvを使用する
$dotenv = Dotenv\Dotenv::createImmutable(DIR);
$dotenv->load();

3. var_dumpの中に$_ENV['PASS']を入れる

index.php
<?php
require './vendor/autoload.php';

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

var_dump($_ENV['PASS']);

ブラウザを確認

passwordが表示されてる🎉
オールクリア。

/Users/sakatsumemasato/create/php-learning/index.php:7:string 'password' (length=8)

つまずいた点

Dotenv\Dotenvに警告が出てて気になった。

vscodeの拡張機能:「PHP Intelephense」が警告を出しているだけで、一応動きます。
スクリーンショット 2021-12-05 11.23.08.png

$_ENVの書き方を間違える

あれれー、動かないな〜。

index.php
var_dump($_ENV('PASS'))

10分後。。。 配列かい。

index.php
var_dump($_ENV['PASS'])

警告ちゃんと読んでればわかりましたね。はい。

Fatal error: Uncaught Error: Array callback must have exactly two elements in /Users/sakatsumemasato/create/php-learning/index.php on line 7

ちなみに

envの値はどうあがいても動くので、envの値が読み込めない場合は、「.env」の影響であることは少ないです。

動く。

"PASS"="password"

動く。

PASS="password"

動く。

"PASS"=password

動く。

'PASS'='password'

動く。

'PASS'=password

動く。

PASS='password'

動く。

PASS=password

動く。

PASS = password

最後に

エラーはちゃんと読みましょう。
現場からは以上です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?