我在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()将环境变量转储到屏幕上时,索引和内容都很好。
有人知道怎么解决这个问题吗?
发布于 2017-01-25 18:36:17
或者使用.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=PASSWORDconnection.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());发布于 2017-01-25 18:25:24
简单的解决方案应该是,从文件返回简单的数组。作为
<?php
return array(
'MySQL' => array(
'database'=>'<DATABASENAME>',
'server'=>'<SERVERNAME>',
'username'=>'<USERNAME>',
'password'=>'<PASSWORD>'
)
);
?>在其他文件中
$credentials = require_once "../env.php";使用$credentials数组为mysql连接函数提供参数
https://stackoverflow.com/questions/41848958
复制相似问题