2017-01-10 10 views
0

У меня около 150 веб-сайтов каждый на своем собственном виртуальном хосте Apache, работающем под php7 на ubuntu 16. Каждый сайт имеет config.php в корневом каталоге dir с константами в нем: define ('MYVAR', 'myval');Сделать php переменную/константу доступной для всех скриптов ad все сайты

Я хочу создать новую константу, которую мне придется обновлять каждые 2 месяца. Я не хочу открывать каждую конфигурацию и редактировать ее. Как я могу каждый узел/виртуальный хост знать об этой константе, которую я хочу установить. Я хочу быть доступным везде, как $ _SERVER ['REMOTE_ADDRESS']; является.

Я не хочу создавать файл, который символизирует его на каждом сайте, thats messy. Я хотел бы отредактировать конфигурацию apache или отредактировать конфигурацию php someplace, чтобы иметь в ней определение().

Возможно ли это? или я придерживаюсь сим связывания файла или редактирования всех моих конфигов?

+1

Вы когда-нибудь искали это? check [PHP: возможно установить константы в файле php.ini по умолчанию] (http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file) и [ Объявление глобальной переменной с помощью php.ini] (http://stackoverflow.com/questions/5052558/declaring-global-variable-with-php-ini) – bansi

+0

Возможная дубликация [PHP: возможно установить константы в файл php.ini по умолчанию ] (http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file) –

ответ

0

Думаю, вам стоит попробовать использовать переменные окружения ОС. Попробуйте установить переменные и затем экспортировать их в файл .profile.

В идеале вы также должны хранить конфиденциальные учетные данные. Таким образом, даже если ваш код просочился, никто не может получить доступ к вашему существующему серверу (никогда не хранить базу данных или другие учетные данные в вашем коде)

Вы можете хранить системные переменные в файле .profile или .bashrc (I будет рекомендовать .profile). Вы можете увидеть, как установить системные переменные здесь: https://unix.stackexchange.com/a/117470/209405

Вы можете получить переменные в PHP с помощью getenv($var) или с помощью $_ENV[$var]. Для получения дополнительной информации вы можете проверить здесь: http://php.net/manual/en/function.getenv.php и http://php.net/manual/en/reserved.variables.environment.php

+0

Как получить доступ к этим переменным в php? –

+0

Использование 'getenv ($ var)'. Подробнее: http://php.net/manual/en/function.getenv.php –

0

Как указано в этой ссылке; PHP: possible to set constants in default php.ini file

Вы не можете просто изобретать переменные в файле PHP, вам нужно будет автоматически создать файл конфигурации, содержащий все переменные.

Игнорирование Ниже

Вы можете сохранить некоторые глобальные переменные в файле php.ini.

Файл php.ini должен использоваться всеми вашими виртуальными хостами Apache.

Если вы обновляете файл php.ini и поместить переменную в как

my_custom_var = ABC123 

Затем вы можете получить доступ к переменной с ini_get

echo ini_get('my_custom_var'); 

Более подробная информация на ini_get в http://php.net/manual/en/function.ini-get.php

0

The лучший неинтрузивный способ для меня состоял в том, чтобы убедиться, что mod_env включен, тогда я добавил в conf-enabled dir файл conf с в нем следующее

SetEnv MYLITTLEVAR thestringIwant

Тогда в PHP я могу получить его:

печать $ _SERVER [ 'MYLITTLEVAR'];

Протестировано и работает для меня.