我在php中遇到了一个数组问题,我用它来存储不同环境的配置数据。我的想法是,当从本地测试到在服务器上使用它时,我只需要用配置数据切换文件。该文件如下所示:
<?php
$_ENV = array(
'MySQL' => array(
'database'=>'<DATABASENAME>',
'server'=>'<SERVERNAME>',
'username'=>'<USERNAME>',
'password'=>'<PASSWORD>'
)
);
?>
我这样包括它:
include('../env.php');
对于与数据库的连接,我使用它:
$conn = mysql_connect($_ENV['MySQL']['server'], $_ENV['MySQL']['username'],$_ENV['MySQL']['password']) or die("No connection possible: " . mysql_error());
忽略我仍在使用mysql而不是PDO或mysqli的事实,这是我即将改变的事情,这应该有效。但事实并非如此:
Notice: Undefined index: MySQL in D:\data\dev\applications\wtc-feedback\dashboard\include\SQLrequest.php on line 36
奇怪的是,当我使用var_dump()将环境变量转储到屏幕上时,索引和内容都很好。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
或使用.env
个文件(包here,文档here)并将.env
添加到.gitignore
实际上你的代码必须是这样的:
env.php:
<?php
putenv('DB_NAME=DATABASENAME');
putenv('DB_HOST=SERVERNAME');
putenv('DB_USER=USERNAME');
putenv('DB_PASS=PASSWORD');
connection.php:
<?php
include('../env.php');
$conn = mysql_connect(getenv('DB_HOST'), getenv('DB_USER'), getenv('DB_PASS'))
OR die("No connection possible: " . mysql_error());
“.env”方式:
.env文件:
DB_NAME=DATABASENAME
DB_HOST=SERVERNAME
DB_USER=USERNAME
DB_PASS=PASSWORD
connection.php:
<?php
require_once('../vendor/autoload.php');
use Symfony\Component\Dotenv\Dotenv;
(new Dotenv())->load(__DIR__.'/../.env');
$conn = mysql_connect(getenv('DB_HOST'), getenv('DB_USER'), getenv('DB_PASS'))
OR die("No connection possible: " . mysql_error());
答案 1 :(得分:-1)
简单的解决方案是,从文件中返回简单数组。如
<?php
return array(
'MySQL' => array(
'database'=>'<DATABASENAME>',
'server'=>'<SERVERNAME>',
'username'=>'<USERNAME>',
'password'=>'<PASSWORD>'
)
);
?>
在其他档案中
$credentials = require_once "../env.php";
使用$credentials
数组为mysql连接函数提供参数