vHost のサブドメインに基づいて PHP 設定を変更する

vHost のサブドメインに基づいて PHP 設定を変更する

多くのサブドメインを同じディレクトリに誘導する VirtualHost があります。

  • moscow.myapp.com
  • パリ

これらすべての Web サイトは同じアプリケーションで実行されます。サブドメインから別のサブドメインに変更する必要があるのは、php 設定の date.timezone だけです。

アプリケーション コードに触れることができません。vHost で直接触れる方法を探しています。

それは可能ですか? どうしますか?

どうもありがとうございます;

答え1

ルックアップ テーブルまたは環境変数 ( によって設定SetEnvIf) に基づいて php_admin_value を設定し、その変数を php_value で設定する方法を試して調査しましたが、おそらく適切なものは見つかりませんでした (すべての構成を 1 つにまとめる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

タイムゾーンインジェクター

<?php date_default_timezone_set($_ENV["TZ"]);

もちろん、これらのSetEnvIfステートメントは PHP コード内の switch ステートメントに移動することもできます。

アプリケーション開発者は、スタック トレースにその内容が表示されるため、コードの前に何かが起こったのではないかと疑う可能性がありますtimezone_injector.php。ただし、難読化された、またはライセンスが厳格で、非技術的な理由で PHP アプリケーションに触れることができない場合は、これが解決策になる場合があります。

関連情報