Como faço para que o PHP 5.3 funcione no Red Hat Enterprise Linux, com o PDO ativado? PHP53 foi instalado com o yum

4

Esse problema é complicado, e eu não sou um especialista, então tenha paciência comigo. Minha equipe administrativa do servidor configurou-me com uma caixa padrão do RHEL. Tinha o PHP pré-instalado, assim como o apache.

Agora estou tentando instalar o Drupal 7 na máquina, o que me alertou para um problema:

Database support Disabled

Your web server does not appear to support any common PDO database extensions. Check with your hosting provider to see if they support PDO (PHP Data Objects) and offer any databases that Drupal supports.

Pesquisando este assunto e conversando com nossos servidores, pareceu que precisávamos ativar as extensões PDO no arquivo php.ini. Ótimo, em /etc/php.ini eu adicionei as linhas extension = pdo.so e extension = mysql_pdo.so.

Nada mudou e tenho várias preocupações. Quando procuramos no servidor por um arquivo pdo.so, ele é encontrado em um diretório modules dentro de / usr / em algum lugar. Copiamos o caminho para esse diretório no php.ini como extension_dir=[that path] . Reinicie o apache, sem alterações.

Quando executo o php -version, vejo uma mensagem de erro dizendo que ele não pode carregar a biblioteca dinâmica, mas está procurando pela biblioteca pdo.so em / usr / local / lib / php / extensions / some-strange -no-debug-non-zts-0330i504065 / directory. Não no diretório que acabamos de definir como "extensions_dir" no php.ini. E na saída phpinfo (), ele lista o diretório da extensão como configuramos no php.ini.

Em segundo lugar, na saída phpinfo (), na seção "Configurar Comando", o sinalizador --disable-pdo está presente.

Se eu verificar which php e, em seguida, navegar até lá, há outro arquivo nesse diretório chamado php-config. Abra isso e TA DA! Há um valor "extension_dir" que corresponde ao diretório /some-strange-no-debug-non-zts-92ur9u92i/ mencionado anteriormente.

Isso tudo precisa ser recompilado com os sinalizadores apropriados? Pode ser corrigido no php.ini? Se não, como poderíamos até recompilar o php se ele fosse instalado com o yum ou o rpm?

OBRIGADO !!!

UPDATE 1
Devo dizer que estou usando pacotes RHEL5 php53. Eu já rodei o yum install php53-pdo. Se eu tentar executar o yum install php-pdo (ou qualquer outro pacote php não php53) recebo erros de conflito entre php53-common e php-common, e é por isso que comecei a executar pacotes php53 em primeiro lugar.

    
por Jason Rhodes 14.10.2011 / 04:49

3 respostas

3

Supondo que você esteja usando os pacotes phep53 do RHEL5:

# yum install php53-pdo

Se você ainda estiver usando o padrão RHEL5 PHP 5.1 RPMs, primeiro desinstale todos eles e, em seguida, instale tudo na cadeia php53 que você acha que precisará.

# yum search php53

No entanto, o RHEL php 5.3 RPMs não suporta PEAR nem PECL. Eles também estão faltando algumas outras extensões php que estão disponíveis com os antigos RPMs. Se você precisar de algum desses pacotes você pode instalá-los você mesmo (a partir do código-fonte), encontre outro repositório em que possa confiar, ou morder a bala e ir para RHEL6. Se você for com a cadeia de pacotes php53 do RHEL, você absolutamente desejará testar se todo o seu código ainda funciona. A sobrecarga de testes pode realmente facilitar a utilização do RHEL6.

    
por 14.10.2011 / 09:38
1

Você pode fazer isso para ativar o pdo:

yum install php-pdo
    
por 14.10.2011 / 09:07
0

Dependendo do banco de dados que você está usando (MySQL, PostgreSQL, ...), certifique-se de ter ativado a extensão correspondente pdo_mysql.so , pdo_pgsql.so . Não esqueça de reiniciar o Apache.

$ php -i | grep pdo
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_odbc.ini,
/etc/php.d/pdo_pgsql.ini,
/etc/php.d/pdo_sqlite.ini,
pdo_mysql
pdo_pgsql
Revision =>  $Id: pdo_pgsql.c 300351 2010-06-10 12:11:19Z iliaa $ 
pdo_sqlite
    
por 14.10.2011 / 15:21