mysql — PHP Включено Предупреждение Массива

У меня проблема с массивом в 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

Решение

Если вы хотите работать с переменными среды, используйте GETENV, PutEnv

или использовать .env файлы (пакет Вот, документы Вот) и добавить .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

Другие решения

Простое решение — вернуть простой массив из файла. как

<?php
return array(
'MySQL' => array(
'database'=>'<DATABASENAME>',
'server'=>'<SERVERNAME>',
'username'=>'<USERNAME>',
'password'=>'<PASSWORD>'
)
);
?>

В другом файле

$credentials = require_once "../env.php";

Использовать $credentials массив для предоставления параметров для функции подключения MySQL

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector