
多くのサブドメインを同じディレクトリに誘導する 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 アプリケーションに触れることができない場合は、これが解決策になる場合があります。