Falha ao instalar o APC?

2

Estou tentando instalar o APC em um gentoo com php 5.2 Aqui o comando completo i Lanched:

mkdir /home/APC-php
cd /home/APC-php
wget http://pecl.php.net/get/APC
tar -xzvf APC
cd APC-3.1.9
/usr/local/php5/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php5/bin/php-config
make
make test (i think almost everything failed here)
make install
/etc/init.d/httpd restart

O comando make install mostrou

Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
Installing header files:          /usr/local/php5/include/php/

Quando eu fiz depois de fazer, make test a saída foi:

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
APC: apc_store/fetch with strings [tests/apc_001.phpt]
APC: apc_store/fetch with objects [tests/apc_002.phpt]
APC: apc_store/fetch with objects (php pre-5.3) [tests/apc_003.phpt]
APC: apc_store/fetch with bools [tests/apc_004.phpt]
APC: apc_store/fetch with arrays of objects [tests/apc_005.phpt]
APC: apc_store/fetch reference test [tests/apc_006.phpt]
APC: apc_inc/apc_dec test [tests/apc_007.phpt]
APC: apc_cas test [tests/apc_008.phpt]
APC: apc_delete_file test [tests/apc_009.phpt]
APC: apc_store/fetch/add with array of key/value pairs. [tests/apc_010.phpt]
APC: bindump user cache [tests/apc_bin_001.phpt]
APC: bindump file cache part 1 [tests/apc_bin_002.phpt]
APC: APCIterator general [tests/iterator_001.phpt]
APC: APCIterator regex [tests/iterator_002.phpt]
APC: APCIterator chunk size [tests/iterator_003.phpt]
APC: APCIterator regex & chunk size & list [tests/iterator_004.phpt]
APC: APCIterator delete [tests/iterator_005.phpt]
APC: APCIterator formats [tests/iterator_006.phpt]
APC: APCIterator Overwriting the ctor [tests/iterator_007.phpt]
=====================================================================

Eu já adicionei extension=apc.so em /usr/local/lib64/php5/php.ini O extension_dir é extension_dir = "./"

Para fazer o apc carregado eu tive que colocar o arquivo apc.so no meu diretório www. Agora phpinfo (); diz que está carregado.

O problema é que o apc_store não armazena os dados entre as solicitações .

$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));

Dentro de uma solicitação deste trabalho.

Agora, se eu tentar fazer um var_dump(apc_fetch('foo')); em outro pedido, ele será impresso:

bool(false)

Parece que o APC não está sendo executado em segundo plano, mas é iniciado apenas para cada solicitação

Esta recompensa não vale a pena? : (

    
por dynamic 27.05.2011 / 00:38

2 respostas

0

A partir das informações que você forneceu, parece que você compilou a maioria dos seus pacotes requeridos do zero, em vez de usar o sistema de gerenciamento de pacotes do Gentoo conhecido como Portage. Tomando a rota de instalação de origem é geralmente uma má idéia, a menos que você saiba exatamente o que está fazendo. Embora seja verdade que o comportamento padrão do Portage seja também instalar pacotes a partir do código-fonte, ele possui um conjunto de ferramentas avançadas de gerenciamento de dependências que manipula automaticamente as dependências mais complexas e torna a atualização e remoção de pacotes bastante indolor.

Os seguintes arquivos e locais de diretório que você especificou são todos não-padrão em uma configuração típica do Gentoo, e certamente causará falhas ou falhas inesperadas nos pacotes interdependentes:

/usr/local/lib64/php5/php.ini
/etc/init.d/httpd
/usr/local/php5/bin/phpize

Se esta não for uma caixa de produção e você puder poupar o tempo de inatividade, sugiro remover completamente o Apache e o PHP e, em seguida, reinstalá-los usando o Portage da seguinte forma:

Instale o Apache:

emerge -av www-servers/apache

Em seguida, você precisará instalar o PHP, mas não deixe de definir o sinalizador apache2 USE. Adicionar seus sinalizadores USE a /etc/portage/packages.use garante que eles serão retidos em futuras atualizações. Um conjunto típico de USE flags definido para PHP em /etc/portage/packages.use será parecido com isto:

dev-lang/php apache2 berkdb bzip2 calendar cli crypt ctype curl curlwrappers fileinfo filter ftp gd gdbm hash iconv imap inifile ipv6 json ldap mssql mysql mysqli nls pdo phar posix readline session simplexml snmp soap sockets spell sqlite ssl threads tokenizer truetype unicode xml xmlrpc xsl zip zlib

Você deve conseguir remover a maioria dos sinalizadores USE fornecidos neste exemplo, exceto o sinalizador apache2 . Seus requisitos específicos determinarão os sinalizadores USE que você precisa definir, mas para uma instalação básica do PHP que funcionará com o Apache, você exige apenas que o sinalizador apache2 seja definido.

Agora que você tem os sinalizadores USE definidos, você pode ir em frente e instalar o PHP:

emerge -av dev-lang/php

Depois que o PHP for instalado com sucesso, você pode confirmar que ele foi configurado corretamente para trabalhar com o Apache abrindo /etc/conf.d/apache2 em um editor de texto e verificando se a linha que começa com APACHE2_OPTS contém a diretiva -D PHP5 .

Agora você pode iniciar o Apache invocando o script de inicialização correto:

/etc/init.d/apache2 start

Não deve haver problemas para iniciar o Apache neste momento. O próximo passo requer algumas mudanças no PHP, então você deve parar o Apache novamente nesse meio tempo.

O Gentoo divide os arquivos de configuração do PHP em dois diretórios separados, um para configurar o PHP CLI e outro para configurar o PHP usado com o Apache. Esses diretórios são os seguintes:

/etc/php/cli-php5/php.ini
/etc/php/apache2-php5/php.ini

Seu caminho exato pode ser um pouco diferente dependendo da versão exata do PHP que você instalou.

O último passo é instalar o APC, novamente usando o Portage:

emerge -av dev-php5/pecl-apc

Uma vez que o APC tenha sido instalado com sucesso, você pode precisar editar o arquivo /etc/php/apache2-php5/php.ini para verificar se o APC está configurado corretamente e para garantir que o PHP carregue a extensão quando o Apache for iniciado. Verifique se os itens a seguir estão presentes no arquivo php.ini :

apc.enabled=1
apc.shm_size=32

A lista completa de diretivas de configuração da APC está disponível aqui nos documentos on-line do PHP .

Você completou todas as etapas necessárias para configurar corretamente o Apache, o PHP e a extensão APC para um ambiente Gentoo. Reinicie o Apache para terminar.

/etc/init.d/apache2 restart
    
por 06.06.2011 / 00:19
0

Eu tive problemas semelhantes no passado.

Tente adicionar esta linha à sua configuração do php

apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.shm_size=48

De qualquer forma, por que você não está usando o pacote pecl-apc do gentoo?

    
por 03.06.2011 / 17:40