
У меня есть 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, которые вы не можете трогать по нетехническим причинам.