
Eu tenho um VirtualHost que direciona muitos subdomínios para o mesmo diretório.
- moscou.myapp.com
- paris.myapp.com
Todos esses sites são executados no mesmo aplicativo. A única coisa que preciso mudar de um subdomínio para outro é a configuração do php date.timezone.
Não consigo alterar o código do aplicativo. Estou procurando uma maneira de fazer isso diretamente no vHost.
É possível ? Como você faria?
Muito obrigado;
Responder1
Eu tentei e pesquisei uma maneira de definir o php_admin_value com base em uma tabela de pesquisa ou uma variável de ambiente (definida por SetEnvIf
) e definir a variável com php_value, mas não encontrei nada que provavelmente fosse adequado para você (tendo todas as configurações em uma VirtualHost
).
Como último recurso, eu poderia aconselhá-lo com um plano tortuoso, escondendo algum código...
Com a diretiva de configuração do php auto_prepend_file
você pode executar algum código antes de iniciar um script. Lá você pode fazer uma pesquisa com base no host virtual ou usar uma variável definida por SetEnvIf
.
Configuração do 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"]);
Claro, as SetEnvIf
instruções podem ser movidas para uma instrução switch no seu código php.
O desenvolvedor do seu aplicativo pode suspeitar que algo aconteceu antes do código, porque isso timezone_injector.php
aparecerá nos rastreamentos de pilha. Mas isso pode ser uma solução se você tiver aplicativos PHP ofuscados ou estritamente licenciados que não consegue tocar por motivos não técnicos.