Come determinare quale PHP viene utilizzato?


10

Come determinare quale PHP viene utilizzato?

Ad esempio, se ci sono /usr/local/bin/phpe usr/local/bin/php5come faccio a sapere quale viene utilizzato dai miei script PHP?

Risposte:


11

Se stai usando l'interfaccia della riga di comando di PHP, prova a usare questi comandi della shell (suppongo che tu stia usando Linux qui)

which php - will locate the php executable (this should be the default php used by you)
whereis php - The first path displayed will be the location of the php executable
echo $PATH - will print a list of paths separated by ":" where the system looks for commands

Se stai usando PHP come modulo Apache, phpinfo () ti dirà la versione di php utilizzata e i file di configurazione php, NON il percorso php . Se hai 2 versioni dell'eseguibile php, questo ti aiuterà. Se hanno la stessa versione, non importa quale sia chi :)

Se vuoi scoprire la versione di php, allora php -v stamperà la versione di php nella CLI e tutti i moduli Zend installati.

Se vuoi scoprire i file ini inclusi, php --ini visualizzerà l'elenco dei file ini caricati dal modulo php (questo vale per la versione CLI).


Grazie per tutti gli stimoli. Apparentemente, il whichcomando è quello di cui avevo bisogno.
Randell,

@Randell - Non usare which; usa command -vinvece. Vedi anche Verifica se esiste un programma da uno script Bash .

7

Aggiungi un semplice script

<?php phpinfo(); ?>

Questo non eseguirà il phplogin di un utente; e non necessariamente il php usato da Apache?

5

Supponendo che si stia utilizzando tramite il server Web:
è possibile inserire la seguente funzione in uno script:

<?php 
phpinfo(); 
?>

Se questo non funziona, potrebbe essere perché questa funzione è disabilitata in php.ini. Questo viene spesso fatto per motivi di sicurezza. In questo caso, nel tuo php.ini avrai una linea come:

disable_functions = phpinfo

In tal caso, modificarlo temporaneamente in

disable_functions =

Se stai usando php per gli script Shell:

  1. Dovrebbe esserci la "linea shebang" in alto, qualcosa del genere

    #! / usr / local / bin / php -q

  2. Sei sicuro che uno non sia un link smybolico all'altro? fare

    ls -l / usr / local / bin / php

  3. Non ;-)


5

Anche dalla riga di comando:

$ php -v

PHP 5.2.6-3ubuntu4 con Suhosin-Patch 0.9.6.2 (cli) (costruito: 31 marzo 2009 02:11:31) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998- 2008 Zend Technologies


Questo non eseguirà il phplogin di un utente; e non necessariamente il php usato da Apache?

1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>

0

Se stai parlando dei tuoi script web che sono chiamati dal tuo server web Apache e PHP è configurato come un modulo Apache, la risposta è NESSUNO.

Le posizioni menzionate nella domanda sono interpreti di script della riga di comando che verrebbero chiamati come notazioni shebang

 #!/usr/local/bin/php

nella parte superiore dello script della riga di comando php

puoi chiamare gli interpreti che hai citato separatamente, poiché hanno nomi diversi

# php

chiamerebbe / usr / local / bin / php e

# php5

chiamerebbe / usr / local / bin / php5

Nessuno di questi viene utilizzato se si utilizza PHP tramite il modulo Apache. Se usi la versione CGI di php, dovrebbe apparire in phpinfo (); produzione.



0
<?php echo shell_exec('which php'); ?>

Funziona anche se non hai accesso alla shell. ;-)


Non penso che questo faccia quello che la persona che stava chiedendo stava cercando. Questo ti dice solo cosa userebbe l'ambiente shell in una ricerca PATH. Questo non è necessariamente lo stesso PHP con cui viene eseguito uno script.
Theuni l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.