Ativando a extensão SSH2 do PHP com nginx

2

Ok, normalmente meu administrador de sistemas cuida disso, mas ele tem estado bastante relaxado ultimamente e eu não posso esperar mais.

Eu usei o PECL para instalar a extensão ssh2 do PHP. Coloquei o extension=ssh2.so no php.ini e verifiquei se o ssh2.so está no extension_dir . Quando eu php -m | grep ssh2 , ele exibe ssh2 . Quando eu executo este script:

<?php

if (function_exists('ssh2_connect'))
{
    echo "true";
}

?>

e executá-lo a partir da linha de comando, echos true .

Quando executo phpinfo() pelo servidor da web, não consigo encontrar ssh2 em nenhum lugar. Quando eu executo ssh2_connect() através do servidor, ele me diz que a função é indefinida.

Meu sistema operacional é o CentOS 5.7 Versão do PHP 5.2.14 nginx / 0.7.67

Procurei em todo o Google e tentei tudo o que pude encontrar, mas não consigo descobrir. Alguém pode ajudar?

EDITAR:

Apenas para manter vocês atualizados, Shish estava certo. Eu encontrei um programa php-fpm , que quando chamado, parece ser o que eu estou procurando. No entanto, ele está falhando ao carregar a extensão ssh2 devido a números de API incompatíveis

Starting php_fpm PHP Warning:  PHP Startup: ssh2: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
 in Unknown on line 0
 done

Após algumas pesquisas curtas, parece que pode ser um problema meu instalar o módulo ssh2 via PECL, e acredito que meu sysadmin compilou o PHP a partir do código-fonte.

Olhando agora.

EDITAR:

Após pesquisas adicionais, parece que duas versões do PHP estão instaladas no meu sistema. Um que eu provavelmente instalei através do yum, e um que meu sysadmin provavelmente instalou. Parece que php-fpm está carregando o que ele instalou e, naturalmente, minhas atualizações não estão afetando. Talvez eu espere por ele no caso de estragar alguma coisa.

EDITAR:

Pensando bem, vou remover tudo e experimentar sozinho. Na pior das hipóteses, vou precisar que ele reinstale tudo e, na melhor das hipóteses, funcionará e não terei mais que esperar por ele. Me deseje sorte.

EDITAR:

Não. Risca isso. Não faço ideia do que estou fazendo. Eu acho que odeio a minha vida. Tenho cerca de 30 separadores abertos no Chrome agora. Vou dormir. Espero que alguém possa fornecer mais informações enquanto eu durmo.

EDITAR:

Sim, provavelmente destruiu tudo. Vou tentar consertar o meu dano e então deixar o meu sysadmin lidar com isso novamente. Vai aceitar a resposta atual porque, bem, estava certo. Passado que foi apenas problemas com a incompatibilidade de API do módulo.

    
por Rob 15.01.2012 / 11:22

1 resposta

3

Você precisará reiniciar o daemon PHP - se o servidor web for nginx, então o PHP provavelmente está rodando como fastcgi ou sob PHP-FPM. Infelizmente eu não conheço o CentOS para saber o comando exato a ser usado para reiniciar esse daemon ...

    
por 15.01.2012 / 12:40