如何在PHP脚本中正确引入Dotenv管理的TOKEN变量?
正确指定TOKEN变量的解决方法
问题根源
你的process_form.php存在两个关键问题:
- 未加载Dotenv环境变量库:测试脚本里有引入
vendor/autoload.php并初始化Dotenv的逻辑,但process_form.php完全缺失这部分,导致$_ENV['TOKEN']根本无法被识别。 - 变量插值语法错误:
"$_ENV['TOKEN']"这种写法在PHP双引号字符串中会触发语法报错——数组索引的单引号嵌套在双引号内不符合PHP解析规则。
修正后的代码写法
修改process_form.php的开头部分,完整引入环境变量加载逻辑并正确获取TOKEN:
<?php // process_form.php // 开启错误提示(调试用,生产环境可关闭) error_reporting(E_ALL); ini_set('display_errors', 1); // 引入自动加载文件,加载Dotenv依赖 require 'vendor/autoload.php'; use Dotenv\Dotenv; // 初始化并加载环境变量,路径与测试脚本保持一致 $dotenv = Dotenv::createImmutable(dirname(__DIR__)); $dotenv->load(); // 正确获取TOKEN:直接取值,避免错误的双引号插值 $TOKEN = $_ENV['TOKEN']; $TELEGRAM_CHAT_ID = "-1002017740885"; if ($_SERVER["REQUEST_METHOD"] == "POST") { $product = $_POST['product']; $name = $_POST['name']; $phone = $_POST['phone']; $email = $_POST['email']; $attachments = $_FILES['attachments']; $invoice = $_FILES['invoice']; ///// ?>
额外说明
- 若一定要使用双引号插值,正确写法为
"{$_ENV[TOKEN]}",但直接使用$_ENV['TOKEN']更简洁且不易出错。 - 确保
.env文件路径与测试脚本一致,且PHP具备该文件的读取权限。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

