У меня есть VirtualHost который прямой много субдоменов к тому же каталогу.
Все те веб-сайты работают на том же приложении. Единственной вещью, которую я должен изменить от субдомена до другого, является php, устанавливающий date.timezone.
Я не могу к touche код приложения. Я ищу способ сделать так непосредственно в 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"]);
Of Конечно, операторы SetEnvIf
могут быть перемещены в оператор switch в вашем php-коде.
Разработчик вашего приложения может заподозрить, что что-то произошло до их кода, потому что появится timezone_injector.php
в трассировках стека. Но это может быть решением, если у вас есть запутанные или строго лицензированные приложения PHP, к которым вы не можете прикоснуться по нетехническим причинам.