Voglio eseguire un programma cli PHP da PHP cli. Su alcune macchine su cui verrà eseguito, sono installati sia php4 che php5. Se eseguo il programma esterno comeOttieni l'eseguibile PHP corrente dallo script?
php5 outer.php
Voglio che lo script interno venga eseguito con la stessa versione di php. In Perl, userei $^X
per ottenere l'eseguibile perl. Sembra che non ci sia una tale variabile in PHP?
Al momento, sto usando $_SERVER['_']
, perché bash (e zsh) impostano la variabile di ambiente $_
nel programma di ultima esecuzione. Ma preferirei non fare affidamento su un linguaggio specifico della shell.
AGGIORNAMENTO: Le differenze di versione sono un problema. Se PHP non è in PATH, per esempio, o non è la prima versione trovata in PATH, i suggerimenti per trovare le informazioni sulla versione non saranno d'aiuto.
Inoltre, csh
e le varianti sembrano non impostare la variabile di ambiente $_
per i loro processi, quindi la soluzione alternativa non è applicabile lì.
UPDATE 2: stavo usando $_SERVER['_']
, fino a quando ho scoperto che non fa la cosa giusta in xargs
(che ha un senso ... zsh
imposta in modo che il comando ha funzionato, che è xargs
, non php5
e xargs
non modifica la variabile). Tornare all'uso:
$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";
E 'possibile semplicemente includere condizionatamente l'altro file PHP? Questo è il modo più semplice per assicurare che il codice incluso venga eseguito con lo stesso interprete del codice incluso. – meagar
Punto interessante. In questo caso particolare, parte del motivo per cui viene eseguito come sottoprocesso è che lo script interno chiama "exit()" in vari punti. – benizi