Domanda

Nello stesso modo in cui è possibile generare contenuti specifici in base al tipo di browser c'è un modo per generare il contenuto specifico basato sul server che esegue PHP senza riferimento al nome del server o sito?

Per esempio, un modo per PHP per rilevare automaticamente l'ambiente era in e configurare le cose come le connessioni DB, ini_set per errori ecc a seconda se si trattasse di uno sviluppo, ITS, SVS o di produzione ambiente.

I 2 modi ho pensato di erano a riconoscere un'intestazione HTTP che indica ambienti di sviluppo e QA o di avere proprietà personalizzate in php.ini.

Ho svegliato un po 'e ha scoperto la funzione php per leggere le intestazioni HTTP, ma php sovrascrive qualsiasi cosa ho impostato nel server web e non so se possono essere impostate nel file php.ini a tutti.

Non ho idea se è possibile aggiungere valori personalizzati per php.ini ma ho avuto una prova e ini_get non avrebbe trovato (avevo riavviato il server web dopo aver cambiato php.ini, naturalmente).

È stato utile?

Soluzione 4

Utilizzando FastCGI in IIS è possibile impostare le variabili di ambiente. Non sembrano essere disponibili a $ _ENV ma possono essere recuperate con getenv ( "variabile").

Per configurare le variabili d'ambiente FastCGI in IIS 5 o 6 è necessario modificare: C: \% systemdrive% \ system32 \ inetsrv \ fcgiext.ini

Ad esempio:

[Types]
php=d:\Dev\PHP\php-cgi.exe
php:1=PHP Site 1
*=Wildcard Mapping

[d:\Dev\PHP\php-cgi.exe]
QueueLength=999
MaxInstances=20
InstanceMaxRequests=500

[PHP Site 1]
ExePath=d:\Dev\PHP\php-cgi.exe
EnvironmentVars=PHPRC:d:\Dev\PHP\,SiteType:Developer

In questo caso è IIS 5 per cui v'è un solo sito e l'ID sito è 1 come indicato nella riga 2 [Tipi].

In IIS 6 è possibile avere più siti e il seguente link ti dice come trovare l'ID del sito: http://weblogs.asp.net/owscott/archive/2005/07/29/how-to- find-the-SiteID-in-IIS 5-e-iis6.aspx .

IIS 7 può essere configurato tramite l'interfaccia utente a quanto pare, una volta è stato installato il pacchetto di amministrazione per IIS 7.

Altri suggerimenti

è possibile specificare una variabile di ambiente in Apache (conf, vhost, .htaccess o come Daem httpd) e poi acces tramite il $ _ENVsuperglobal

Io uso il seguente per caricare le impostazioni differenti per i diversi server:

switch ($_SERVER['SERVER_NAME']) {
case 'web-host': case '10.0.0.208':
    # Set DB Settings
case 'mydomain.com': default:
    # Live server settings
}

Non è avuto un problema con esso finora

Un'altra alternativa che non è stato ancora citato potrebbe essere quella di creare un server specifico (ma con lo stesso nome) del file di configurazione, che dovrebbe essere incluso nella all'inizio del vostro sito script. In questo file di configurazione specifica del server è possibile impostare le variabili di configurazione come costanti. In questo modo, se ci fosse una 'generica' file di configurazione caricato più tardi, i suoi valori potrebbe essere sostituito nel file di configurazione specifiche del server come costanti non possono essere ridefiniti. Si vorrebbe né escludere il nome del file di configurazione specifico del server dalle sincronizzazioni o tenerlo in un percorso al di fuori del contenuto principale in modo che non viene sovrascritto accidentalmente.

A questo scopo si può anche configurare array costanti con l'aiuto di costante di matrice 2 classe .

Quando i file di configurazione specifici per server sono utilizzati non devi preoccuparti per il SERVER_NAME corrente - questo rende più facile per voi per definire l'ambiente di utilizzo indipendentemente dal nome attuale sistema che potrebbe essere utile anche per scopi QA.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top