私は複数のサーバーに展開する単一のコードベースを持っています。PHP:一貫してローカルサーバーを特定する
データベースなどの正しい構成情報を使用するために、コードが実行されているサーバーを特定する必要があります。
私は最初にDOCUMENT_ROOTを使用してアカウント名を確認しようとしました。
if (strpos($_SERVER['DOCUMENT_ROOT'], '/var/www/vhosts/SOMETHING.com/') !== false)
{ //is a specific server }
しかし、これは私が私のcronジョブが実行されたときのPleskから開始されたときにDOCUMENT_ROOTは、空であることを発見し、うまく動作します。
サーバーの識別にはより良い方法がありますか?
すべてのサーバーですべてのファイルが同じであることを保証するFTP同期ソフトウェアは、一部のファイルの除外をサポートしていないため、サーバー固有の構成ファイルは必要ありません。
さらに、サーバーは異なるコントロールパネルと設定を実行している可能性がありますので、可能な限り一般的なものをお願いいたします。
これらのcronジョブは、PHPで書かれたコンソールアプリケーションを実行する責任がありますか?どのようにそれらを設定しますか?各サーバーで手動で?その場合は、コマンドライン引数としてサーバー名をコンソールアプリケーションに渡すことができます。 – Nima
PHPをコマンドラインから実行している場合、関連するWebサーバはありません。だから '$ _SERVER'は何も返しません。コマンドラインから実行できる 'hostname'コマンドがあります。たぶん、 'exec()'を使ってPHPで読むことができますか? – Andy
@ニマ、ありがとう、私はcronコマンドを介してサーバー情報を渡すことを考えなかった。 – seventeen