首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP包含的数组警告

PHP包含的数组警告
EN

Stack Overflow用户
提问于 2017-01-25 18:19:24
回答 2查看 72关注 0票数 0

我在php中的一个数组遇到了问题,我用它来存储不同环境的配置数据。这个想法是,当我从本地测试到在服务器上使用配置数据时,我只需要切换出包含配置数据的文件。该文件如下所示:

代码语言:javascript
复制
<?php
  $_ENV = array(
    'MySQL' => array(
      'database'=>'<DATABASENAME>',
      'server'=>'<SERVERNAME>',
      'username'=>'<USERNAME>',
      'password'=>'<PASSWORD>'
    )
  );
?>

我以这样的方式包含它:

代码语言:javascript
复制
include('../env.php');

为了连接到数据库,我像这样使用它:

代码语言:javascript
复制
$conn = mysql_connect($_ENV['MySQL']['server'], $_ENV['MySQL']['username'],$_ENV['MySQL']['password']) or die("No connection possible: " . mysql_error());

忽略我仍然在使用mysql而不是PDO或mysqli的事实,这是我很快就会改变的,这应该是可行的。但事实并非如此:

代码语言:javascript
复制
Notice: Undefined index: MySQL in D:\data\dev\applications\wtc-feedback\dashboard\include\SQLrequest.php on line 36

奇怪的是,当我使用var_dump()将环境变量转储到屏幕上时,索引和内容都很好。

有人知道怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-01-25 18:36:17

如果要使用环境变量,请使用getenvputenv

或者使用.env文件(包here、文档here)并将.env添加到.gitignore

实际上,您的代码必须如下所示:

env.php:

代码语言:javascript
复制
<?php

putenv('DB_NAME=DATABASENAME');
putenv('DB_HOST=SERVERNAME');
putenv('DB_USER=USERNAME');
putenv('DB_PASS=PASSWORD');

connection.php:

代码语言:javascript
复制
<?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文件:

代码语言:javascript
复制
DB_NAME=DATABASENAME
DB_HOST=SERVERNAME
DB_USER=USERNAME
DB_PASS=PASSWORD

connection.php:

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2017-01-25 18:25:24

简单的解决方案应该是,从文件返回简单的数组。作为

代码语言:javascript
复制
<?php
 return array(
'MySQL' => array(
  'database'=>'<DATABASENAME>',
  'server'=>'<SERVERNAME>',
  'username'=>'<USERNAME>',
  'password'=>'<PASSWORD>'
 )
);
?>

在其他文件中

代码语言:javascript
复制
$credentials = require_once "../env.php";

使用$credentials数组为mysql连接函数提供参数

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41848958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档