awsのEC2を使用しています。
sendgridでメール送信をしたいのですが、以下のエラーが出てしまいました。
Fatal error: Uncaught Dotenv\Exception\InvalidPathException: Unable to read any of the environment file(s) at [/usr/share/nginx/html/.env]. in /usr/share/nginx/html/vendor/vlucas/phpdotenv/src/Store/FileStore.php:68 Stack trace: #0 /usr/share/nginx/html/vendor/vlucas/phpdotenv/src/Dotenv.php(222): Dotenv\Store\FileStore->read() #1 /usr/share/nginx/html/email.php(10): Dotenv\Dotenv->load() #2 {main} thrown in /usr/share/nginx/html/vendor/vlucas/phpdotenv/src/Store/FileStore.php on line 68
dotenvで環境変数を持ってこれていないようなので、
SSHから接続して、以下のコマンドを打ってdotenvをインストールしましたが、インストールできたっぽいのですが以下のメッセージが出、うまくインストールできたかわかりません。(変わらずdotenvから変数を持ってこれないというエラーが出ます)
▼打ったコマンド
composer require vlucas/phpdotenv
▼出たメッセージ
Using version ^5.2 for vlucas/phpdotenv ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 6 installs, 0 updates, 0 removals As there is no 'unzip' command installed zip files are being unpacked using thPHP zip extension. This may cause invalid reports of corrupted archives. Besides, any UNIX permisons (e.g. executable) defined in the archives will be lost. Installing 'unzip' may remediate them. - Installing symfony/polyfill-php80 (v1.18.1): Downloading (100%) - Installing symfony/polyfill-mbstring (v1.18.1): Downloading (100%) - Installing symfony/polyfill-ctype (v1.18.1): Downloading (100%) - Installing phpoption/phpoption (1.7.5): Downloading (100%) - Installing graham-campbell/result-type (v1.0.1): Downloading (100%) - Installing vlucas/phpdotenv (v5.2.0): Downloading (100%) Writing lock file Generating autoload files 6 packages you are using are looking for funding. Use the `composer fund` command to find out more!
解決方法のアドバイスをいただけますと幸いです。
【追記】
フォルダ構成と、.env、phpファイルのコードを追記します。
公開ルートディレクトリ直下に.envファイルを置き、
contact/func.phpファイルでphpdotenvを使っています。
ルートディレクトリ
└.env
└contactフォルダ
└contactフォルダの下にfunc.php
.env内
SEND_GRID_KEY = "キーが入ります"
func.php
<?php require_once ("../vendor/autoload.php"); $mail_subject = "お問合わせ受付"; $mail_body = "以下の内容でお問い合わせを受け付けました。"; $mail_to = "メールアドレスの配列"; $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__)); $dotenv->load(); $key = $_ENV["SEND_GRID_KEY"]; // Declare a new SendGrid Mail object $email = new \SendGrid\Mail\Mail(); // Set the email parameters $email->setFrom("メールアドレスが入ります", "From名が入ります"); $email->setSubject($mail_subject); $tos = $mail_to; $email->addTos($tos); $email->addContent("text/plain", $mail_body); //$email->addContent("text/html", "and easy to do anywhere, even with PHP"); $sendgrid = new \SendGrid($key); // Send the email try { $response = $sendgrid->send($email); print $response->statusCode() . "\n"; print_r($response->headers()); print $response->body() . "\n"; echo "email sent!\n"; } catch (Exception $e) { echo 'Caught exception: '. $e->getMessage() ."\n"; }
ちなみに、開発環境はcloud9ですが、開発環境ではエラーも出ずに動いています。
回答1件
あなたの回答
tips
プレビュー