Назад | Перейти на главную страницу

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

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