Tentando encontrar uma versão duplicada do PHP no meu sistema. Cadê?

0

Eu tenho um tempo helluva tentando rastrear qual binário php meu apache está usando.

locate bin/php retorna esta lista

/usr/bin/php
/usr/bin/php-cgi
/usr/bin/php-config
/usr/bin/phpize
/usr/local/bin/php
/usr/local/bin/php-cgi
/usr/local/bin/php-config
/usr/local/bin/php-shell.sh
/usr/local/bin/phpize

Vamos ver as versões:

/usr/bin/php -v       shows 5.3.2
/usr/bin/local/php -v shows 5.3.2

Que tal which ?

[macek ~]$ which php
/usr/bin/php

O problema

phpinfo(); quando executado pelo apache mostra 5.2.11

Onde está este fantasma 5.2.11 no meu sistema?

    
por macek 03.05.2010 / 21:03

3 respostas

2

Você está usando PHP através do CGI? Ou você o construiu no Apache em tempo de execução como mod_php? Se você não estiver executando o PHP como um programa CGI, não importa onde ele esteja no shell.

    
por 03.05.2010 / 21:11
1

Verifique se sua instalação do apache não está carregando mod_php de dois locais diferentes. Em muitas distribuições de linux modernas, o Mod_php é incluído em /etc/http/conf.d/php.conf e não (como costumava ser o caso) no arquivo /etc/httpd/conf/httpd.conf normal.

Eu já vi pessoas acidentalmente dizerem ao apache para carregar o php duas vezes, sem saber disso. É especialmente comum se você construir sua própria versão do php, e atualizar o arquivo httpd.conf, sem verificar se o não é um arquivo php.conf.

    
por 03.05.2010 / 21:22
0

Para ter certeza, você pode ver o que está sendo executado no seu apache.

Duas maneiras que conheço:

O comando lsof lista arquivos abertos, e você pode especificar um ID de processo, e ele mostrará os arquivos abertos (incluindo bibliotecas compartilhadas) para esse processo.

Depois de abertas, as bibliotecas compartilhadas são mapeadas na memória. No Linux, você pode procurar no arquivo / proc / pid / maps para ver todas as bibliotecas compartilhadas mapeadas para o seu processo.

    
por 03.08.2011 / 18:16