Изменение настроек php на основе поддомена в vHost

Изменение настроек php на основе поддомена в vHost

У меня есть VirtualHost, который направляет множество поддоменов в один и тот же каталог.

  • moscow.myapp.com
  • paris.myapp.com

Все эти веб-сайты работают на одном и том же приложении. Единственное, что мне нужно изменить с поддомена на другой, это настройка php date.timezone.

Я не могу потрогать код приложения. Я ищу способ сделать это напрямую в vHost.

Возможно ли это? Как бы вы поступили?

Большое спасибо;

решение1

Я пробовал и исследовал способ установки php_admin_value на основе таблицы поиска или переменной среды (устанавливаемой с помощью SetEnvIf) и установки переменной с помощью php_value, но не нашел ничего, что, вероятно, подошло бы вам (имея все настройки в одном VirtualHost).

В крайнем случае я могу посоветовать вам хитрый план, спрятав какой-нибудь код...

С директивой конфигурации php auto_prepend_fileвы можете выполнить некоторый код перед фактическим запуском скрипта. Там вы можете сделать поиск на основе виртуального хоста или использовать переменную, заданную SetEnvIf.

Конфигурация Apache VirtualHost:

SetEnvIfNoCase Host "^sandbox.coolhaven.info$" TZ=Europe/Moscow
SetEnvIfNoCase Host "^sandbox2.coolhaven.info$" TZ=Europe/Paris

php_value auto_prepend_file /var/www/misc/timezone_injector.php

/var/www/misc/timezone_injector.php

<?php date_default_timezone_set($_ENV["TZ"]);

Конечно, эти SetEnvIfоператоры можно перенести в оператор switch в вашем PHP-коде.

Разработчик вашего приложения может заподозрить, что что-то произошло до его кода, потому что это timezone_injector.phpбудет отображаться в трассировках стека. Но это может быть решением, если у вас есть запутанные или строго лицензированные приложения PHP, которые вы не можете трогать по нетехническим причинам.

Связанный контент