Altere as configurações do php com base no subdomínio no vHost

Altere as configurações do php com base no subdomínio no vHost

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_filevocê 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 SetEnvIfinstruçõ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.phpaparecerá 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.

informação relacionada