PHP - Extensões - no-debug-non-zts-xxxxxxxx

5

Eu estou compilando extensões php (memcached e xdebug), e quando executo make install, elas continuam sendo instaladas em /usr/local/php/lib/php/extensions/ no-debug-non-zts-20090626. Então, algumas perguntas:

  1. O que não-debug-non-zts-20090626 significa, e por que é o padrão?

  2. É uma boa prática editar o arquivo php.ini e definir a diretiva extension_dir para o diretório mencionado acima? Ou devo compilar cada módulo com um PREFIX = / usr / local / php / extensions? Então, quando eu faço a instalação, eles são colocados em um diretório de extensões personalizadas, então eu posso adicionar linhas extension = / usr / local / php / extensions / memcached.so aos meus arquivos .ini.

  3. Existe algum risco ao compilar um novo módulo, que ele irá em um diretório diferente do diretório em questão # 1?

por Mike Purcell 16.06.2012 / 00:51

3 respostas

3

"no-debug-non-zts-20090626" significa que ele é construído sem o sinalizador de depuração e sem ZTS, que é o acrônimo que o PHP usa para indicar a segurança do encadeamento interno. O registro de data é usado para identificar a versão interna da API. Tenho certeza que um identifica o PHP 5.3.

Em vez de compilar você mesmo e fazer com que essas perguntas precisem de respostas, você provavelmente quer realmente procurar por versões pré-compiladas desses módulos fornecidas pela sua distribuição do SO ou por um terceiro confiável. O Memcached e o xdebug são extensões incrivelmente comuns, e as chances são de que eles já estejam facilmente disponíveis para você.

Se você falhar, provavelmente deseja usar a ferramenta pecl para fazer o download, compilar e instalar para você. Essas ferramentas existem por boas razões.

    
por 16.06.2012 / 00:58
1

Acabei não configurando o local do módulo, mas apenas criei arquivos .ini de extensão que cada um carrega a extensão usando o módulo completo uri:

; memcached.ini
extension=/path/to/php/lib/php/extensions/no-debug-non-zts-20090626/memcached.so

Dessa forma, quando eu faço make install , não preciso fazer nenhum link simbólico etc.

Uma anotação, se eu não usar o módulo completo uri dentro do arquivo .ini personalizado, o PHP não poderá encontrar o módulo, o que é estranho, porque se eu adicionar o seguinte ao php.ini, ele funcionará bem:

; php.ini
extension=memcached.so

De qualquer forma, conseguiu que funcionasse.

    
por 21.06.2012 / 01:34
0

Verifique se as bibliotecas foram encontradas:

ldd /usr/lib/php/extensions/no-debug-non-zts-xxxxxxxx/memcached.so

Dependências:

yum -y install gcc make automake autoconf gcc-c++ flex bison
yum remove libmemcached
/usr/bin/pecl uninstall memcached
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -xvzf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure
make && make install
/usr/bin/pecl install memcached-2.2.0
echo "extension=memcached.so" >/etc/php.d/memcached.ini
service httpd restart
/usr/bin/php -i | grep memcached
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

Verificar registros:

tail -f /var/log/httpd/error_log
    
por 25.07.2017 / 22:39

Tags