У меня проблема с массивом в 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 (), все индексы и их содержимое просто в порядке.
Кто-нибудь знает, как это исправить?
Если вы хотите работать с переменными среды, используйте 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());
Простое решение — вернуть простой массив из файла. как
<?php
return array(
'MySQL' => array(
'database'=>'<DATABASENAME>',
'server'=>'<SERVERNAME>',
'username'=>'<USERNAME>',
'password'=>'<PASSWORD>'
)
);
?>
В другом файле
$credentials = require_once "../env.php";
Использовать $credentials
массив для предоставления параметров для функции подключения MySQL