Переменные среды используются для настройки приложения PHP, и приложение работает без сбоев. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь сослаться на файл подключения к базе данных приложения и запустить его из интерфейса командной строки.
Настройка Apache:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName server.hostname.com
SetEnv HOSTNAME 'hostname'
SetEnv USERNAME 'username'
SetEnv DB_PASSWORD 'password'
SetEnv DB_NAME 'databaseName'
</VirtualHost>
В переменных среды хранятся все данные, относящиеся к соединению, и соединение ссылается на них.
Соединение:
<?php
$username = $_SERVER['USERNAME'];
$password = $_SERVER['DB_PASSWORD'];
$hostname = $_SERVER['HOSTNAME'];
$database = $_SERVER['DB_NAME'];
error_reporting(0);
$mysqli = new mysqli($hostname, $username, $password, $database);
Но когда я запускаю его из CLI, он не принимает переменные среды, а также не позволяет мне запускать cronjobs, которые установлены на сервере по той же причине.
Если вы не в среде общего хостинга, вы можете поместить свои вары в / etc / environment
, и они будут доступны через ] $ _ SERVER
при запуске из интерфейса командной строки.
Формат будет следующим:
HOSTNAME="hostname"
USERNAME="username"
DB_PASSWORD="password"
DB_NAME="databaseName"
Нет SetEnv
, по одному на строку.
Это позволит сохранить эти потенциально чувствительные значения конфигурации вне вашего кода (и, следовательно, вне контроля версий) для дополнительной безопасности.