vHost의 하위 도메인을 기반으로 PHP 설정 변경

vHost의 하위 도메인을 기반으로 PHP 설정 변경

많은 하위 도메인을 동일한 디렉토리로 연결하는 VirtualHost가 있습니다.

  • moscow.myapp.com
  • paris.myapp.com

모든 웹사이트는 동일한 애플리케이션에서 실행됩니다. 하위 도메인에서 다른 도메인으로 변경해야 하는 유일한 것은 PHP 설정 date.timezone입니다.

애플리케이션 코드를 터치할 수 없습니다. vHost에서 직접 수행할 수 있는 방법을 찾고 있습니다.

가능합니까? 어떻게 하시겠습니까?

매우 감사합니다;

답변1

SetEnvIf조회 테이블이나 환경 변수(에서 설정 )를 기반으로 php_admin_value를 설정하고 php_value로 변수를 설정하는 방법을 시도하고 연구했지만 아마도 사용자에게 적합한 것을 찾지 못했습니다(모든 구성이 하나에 있음 VirtualHost).

최후의 수단으로 일부 코드를 숨기는 기만적인 계획을 조언해 드릴 수 있습니다.

PHP 구성 지시문을 사용하면 auto_prepend_file실제로 스크립트를 시작하기 전에 일부 코드를 실행할 수 있습니다. 여기서 가상 호스트를 기반으로 조회를 수행하거나 에서 설정한 변수를 사용할 수 있습니다 SetEnvIf.

아파치 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명령문은 PHP 코드의 스위치 명령문으로 이동할 수 있습니다.

애플리케이션 개발자는 timezone_injector.php스택 추적에 표시되기 때문에 코드 이전에 어떤 일이 발생했는지 의심할 수 있습니다. 그러나 이것은 기술적이지 않은 이유로 인해 접근할 수 없는 난독화되거나 엄격한 라이센스가 부여된 PHP 애플리케이션이 있는 경우 해결책이 될 수 있습니다.

관련 정보