У меня есть VirtualHost, который направляет множество поддоменов в один и тот же каталог.
Все эти веб-сайты работают в одном приложении. Единственное, что мне нужно изменить с одного поддомена на другой, - это настройка php date.timezone.
Не могу потрогать код приложения. Я ищу способ сделать это прямо в vHost.
Является ли это возможным ? Как бы вы поступили?
Большое спасибо;
Я пробовал и исследовал способ установить 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, к которым вы не можете прикоснуться по нетехническим причинам.