Non v'è alcun modo per impostare le variabili d'ambiente dalla riga di comando specifico per l'esecuzione di uno script dal passaggio delle opzioni al binario PHP.
avete alcune opzioni:
- Impostare la variabile a livello globale sul sistema.
- Impostare la variabile sulla riga di comando prima di chiamare lo script. Questo persisterà nell'ambiente al termine dell'esecuzione dello script, cosa che potresti non volere.
- Avvolgi lo script PHP in un altro script, consentendoti di creare una variabile temporanea che esiste solo per la durata dello script.
- Utilizzare un'opzione della riga di comando anziché una variabile di ambiente.
Le ultime due opzioni sono probabilmente il modo più semplice per eseguire questa operazione, in quanto la variabile creata esiste solo per il tempo di esecuzione dello script.
L'implementazione dell'opzione 1 dipende dal sistema.
Anche l'implementazione dell'opzione 2 dipende dal sistema: su Windows si farebbe set APPLICATION_ENV=staging&& php script.php
e su * nix sarebbe export APPLICATION_ENV='staging' && php script.php
.
Se dovessi optare per l'opzione 3, potresti essere tentato di utilizzare uno script di shell, ma questo non è portabile (ti occorrerebbe un file batch per Windows e uno script di shell per gli ambienti * nix. d suggerisco di scrivere un semplice script PHP involucro, qualcosa di simile a questo:.
<?php
putenv('APPLICATION_ENV=staging');
include('script.php');
questo permette di lasciare lo script di destinazione invariato e impostare la variabile d'ambiente per la sessione dello script solo
uno script wrapper più complessa potrebbe essere facilmente creato che ti consentirebbe di specificare variabili sulla riga di comando e persino di specificare in modo dinamico lo scrip t che dovrebbe essere eseguito quando queste variabili sono impostate.
Opzione 4 può essere implementato usando la variabile :
<?php
$applicationEnv = $argv[1];
// rest of you script
...e chiamare lo script come:
php script.php staging
Tuttavia, mi viene in mente che ti sembra di essere che indica allo script quale ambiente è in esecuzione in (messa in scena, dev, dal vivo, ecc) - nel qual caso potrebbe essere più semplice impostare una variabile a livello di server e rinominarlo come necessario per evitare la collisione con le variabili che potrebbero essere impostate da altre applicazioni. In questo modo puoi semplicemente invocare lo script e non devi preoccuparti di questo. Questo presuppone che l'ambiente di staging venga eseguito su un altro computer sul live (quale dovrebbe essere).
è lo spazio tra -d e APPLICATION_ENV un errore di battitura ? Prova a mettere putenv ("APPLICATION_ENV = staging"); in script.php – Tdelang
È necessario impostare alcune variabili all'interno dello script o accedere a una variabile di ambiente all'interno dello script? Se quest'ultimo, quale codice stavi usando per accedervi? – DaveRandom
Nella variabile di script viene richiamata la funzione 'getenv()'. – Wiktor