Переменные среды PHP в интерфейсе командной строки

Переменные среды используются для настройки приложения 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, которые установлены на сервере по той же причине.

1
задан 2 August 2019 в 10:33

1 ответ

Если вы не в среде общего хостинга, вы можете поместить свои вары в / etc / environment , и они будут доступны через ] $ _ SERVER при запуске из интерфейса командной строки.

Формат будет следующим:

HOSTNAME="hostname"
USERNAME="username"
DB_PASSWORD="password"
DB_NAME="databaseName"

Нет SetEnv , по одному на строку.

Это позволит сохранить эти потенциально чувствительные значения конфигурации вне вашего кода (и, следовательно, вне контроля версий) для дополнительной безопасности.

2
ответ дан 22 April 2020 в 13:29

Другие вопросы по тегам:

Похожие вопросы: