Como determinar qual PHP está sendo usado?


10

Como determinar qual PHP está sendo usado?

Por exemplo, se houver /usr/local/bin/phpe usr/local/bin/php5, como sei qual está sendo usado pelos meus scripts PHP?

Respostas:


11

Se você estiver usando a CLI do PHP, tente usar esses comandos do shell (suponho que você esteja usando o linux aqui)

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 você estiver usando PHP como um módulo Apache, o phpinfo () informará a versão do php usada e os arquivos de configuração do php, NÃO o caminho do php . Se você possui 2 versões do executável php, isso o ajudará. Se eles são a mesma versão, então realmente não importa qual é quem :)

Se você quiser descobrir a versão php, o php -v imprimirá a versão php na CLI e em qualquer módulo Zend instalado.

Se você quiser descobrir os arquivos ini incluídos, o php --ini exibirá a lista de arquivos ini carregados pelo módulo php (isso se aplica à versão CLI).


Obrigado por todas as entradas. Aparentemente, o whichcomando é o que eu precisava.
Randell

@ Randell - Não use which; use em command -vvez disso. Consulte também Verifique se existe um programa a partir de um script Bash .

7

Basta adicionar um script simples

<?php phpinfo(); ?>

Isso não executa o phplogin de um usuário; e não necessariamente o php usado pelo Apache?

5

Supondo que você esteja usando através do servidor Web:
Você pode colocar a seguinte função em um script:

<?php 
phpinfo(); 
?>

Se isso não funcionar, pode ser porque essa função está desabilitada no php.ini. Isso geralmente é feito por segurança. Se for esse o caso, você terá uma linha no seu php.ini como:

disable_functions = phpinfo

Se for esse o caso, altere temporariamente para

disable_functions =

Se você estiver usando o php for Shell Scripts:

  1. Deve haver a 'linha shebang' no topo, algo como

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

  2. Tem certeza de que um não é um link smybolic para o outro? Faz

    ls -l / usr / local / bin / php

  3. Não ;-)


5

Também na linha de comando:

$ php -v

PHP 5.2.6-3ubuntu4 com Suhosin-Patch 0.9.6.2 (cli) (compilado em 31 de março de 2009 02:11:31) Copyright (c) 1997-2008 O PHP Group Zend Engine v2.2.0, Copyright (c) 1998- 2008 Zend Technologies


Isso não executa o phplogin de um usuário; e não necessariamente o php usado pelo Apache?

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

0

Se você estiver falando sobre seus scripts da web chamados pelo servidor da web Apache e o PHP estiver configurado como um módulo Apache, a resposta será NENHUM.

Os locais mencionados na sua pergunta são intérpretes de script de linha de comando que seriam chamados pela notação shebang como

 #!/usr/local/bin/php

no topo do seu script de linha de comando php

você pode ligar para os intérpretes mencionados separadamente, pois eles têm nomes diferentes

# php

chamaria / usr / local / bin / php e

# php5

chamaria / usr / local / bin / php5

Nenhum deles será usado se você usar PHP através do módulo Apache. Se você usa a versão CGI do php, ela deve aparecer no phpinfo (); resultado.



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

Isso funciona mesmo se você não tiver acesso ao shell. ;-)


Eu não acho que isso faz o que a pessoa estava procurando. Isso mostra apenas o que o ambiente do shell acabaria usando em uma pesquisa PATH. Isso não é necessariamente o mesmo PHP que aquele com o qual um script é executado.
Theuni 08/12/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.