Переменные Openshift MySQL Environment не работают в PHP

Кажется, я не могу заставить MySQL Vars для Openshift работать в моем PHP-приложении. Я создал файл test.php, чтобы попытаться добраться до сути.

test.php

<?php
define( "DB_SERVER", getenv('OPENSHIFT_MYSQL_DB_HOST'));
echo "Host1 define: ".DB_SERVER;
echo "<br>Host2 getenv: ". getenv('OPENSHIFT_MYSQL_DB_HOST');
echo "<br>Host3 _env: ". $_ENV['OPENSHIFT_MYSQL_DB_HOST'];
echo "<br>Host4 _server: ". $_SERVER['OPENSHIFT_MYSQL_DB_HOST'];
echo "<br>Openshift App Name: ". $_ENV['OPENSHIFT_APP_NAME'];
?>

Вывод в браузере:

Host1 определить:
Host2 getenv:
Host3 _env:
Host4 _server:
Имя приложения Openshift: web

Я добавил в Openshift App Name Var, чтобы показать, что некоторые Openshift Vars действительно работают, а MySQL по какой-то причине нет.

Версия картриджа PHP: 5.4 Версия MySQL: 5.5

Любые идеи о том, как дальше отлаживать? Я начал с чистой установки, так что это очень странно.

Примечание.

Запуск echo $OPENSHIFT_MYSQL_DB_HOST в консоли Openshift SSH ДЕЙСТВИТЕЛЬНО дает мне IP-адрес для хоста. Я также пытался перезапустить картридж со страницы администратора Openshift, но безуспешно.

Более чем рад предоставить больше информации, я очень хочу написать четкие вопросы SO.


person redfox05    schedule 09.12.2015    source источник


Ответы (1)


Наконец-то нашел! Сделайте git push, чтобы запустить переменные mysql.

Создайте фиктивный файл в вашем каталоге git (пример ниже для Linux), зафиксируйте, затем нажмите:

touch test
git add test
git commit -m "Test file for triggering git push deploy process"
git push

Не забудьте удалить тестовый файл при следующем коммите.

Несмотря на то, что я пытался перезапустить картридж из веб-панели управления Openshift, проблема была решена путем отправки «чего-то» в git, и что-то в этом процессе развертывания позволило этим переменным для mysql работать.

Я нашел здесь ответ (https://stackoverflow.com/a/26898911/339803), в котором предлагалось нажать на git по крайней мере один раз, но я не пробовал, так как уже нажал на git, чтобы изменить файл конфигурации БД PHP со статических значений на значения $_ENV. Поэтому я предположил, что повторение этого не поможет.

Тем не менее, как только я создал тестовый файл и отправил его в git, переменные mysql заработали.

person redfox05    schedule 09.12.2015
comment
Обновление: я понял, что никогда не делал толчок после изменения переменных MYSQL на ENV, поскольку я изменил переменные со статических на динамические, используя SSH, чтобы попасть в каталог данных Openshift. Таким образом, 2-й толчок заставил все это работать, хотя на самом деле это был 1-й толчок. (Настройки БД находятся в CMS (concrete5) и должны находиться в постоянном каталоге вне git), так как converte5 любит управлять этими настройками через свою CMS. Я не мог использовать CMS, так как переменные $_ENV были бы заключены в кавычки. Поэтому мне пришлось оставить конфигурацию в постоянном каталоге и редактировать ее с помощью командной строки. - person redfox05; 09.12.2015
comment
Это сработало для меня! Несмотря на то, что я вручную перезапустил свое оборудование, PHP не подхватил переменные, пока я не сделал еще один толчок Git. - person sean.boyer; 01.12.2016