Como instalar o php cli com o pnctl ao lado do Zend Server

1

Eu tenho o Zend Server CE 5.6 com o PHP 5.2 rodando no Ubuntu 11.10. Agora surgiu a necessidade de executar um script PHP de linha de comando que usa a funcionalidade pnctl do PHP.

Primeiro de tudo, eu não tinha nenhuma linha de comando do PHP no caminho, então eu fiz um link simbólico a partir do Zend:

sudo ln -s /usr/local/zend/bin/php /usr/bin

No entanto, quando executo meu script, agora recebo este erro:

Erro fatal do PHP: Chamada para a função indefinida pcntl_fork ()

O painel de controle da web do Zend não oferece pnctl na lista de módulos, então como obtenho essa funcionalidade?

É seguro usar o apt-get para instalar o PHP diretamente, para rodar ao lado da instância do Zend? Se sim, como posso ter certeza de obter a versão 5.2? Eu acho que o seguinte seria puxar no PHP 5.3:

apt-get install php5-cli

Eu provavelmente poderia mudar, mas qualquer indicação para me ajudar a evitar fazer uma bagunça seria muito apreciada!

    
por fazy 04.02.2012 / 03:27

3 respostas

1

Para instalar a extensão pcntl para o apache:

cd path/to/php/ext/pcntl/
phpize && ./configure && make install
echo "extension=pcntl.so" >> /path/to/php.ini
apachectl restart

Verificando se está tudo bem.

php -m | grep pcntl

O outpout deve ser pcntl .

    
por 11.02.2016 / 23:41
0

Primeiro de tudo, não use o symlink. Em vez disso, estenda seu $ PATH:

export PATH=$PATH:/usr/local/zend/bin:/usr/local/zend/sbin

(você pode colocar isso no seu $ HOME / .bashrc)

Segundo ponto, o pcntl não é um módulo, ele é compilado dentro do PHP. Você provavelmente está perdendo algum caminho de biblioteca. Tente algo assim antes de chamar o php:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zend/lib::/usr/local/zend/lib64
    
por 04.02.2012 / 15:54
0

Talvez não seja uma resposta satisfatória, mas "resolvi" o problema no final copiando o seguinte arquivo de outra máquina virtual à qual eu tinha acesso, que por acaso tinha uma instalação funcional (ambos são PHP 5.2. * e 64- bit Ubuntu):

/usr/local/zend/lib/php_extensions/pcntl.so

Então, configurei o PHP para usá-lo com esta linha:

extension=pcntl.so

(o acima pode provavelmente ir em php.ini, mas eu coloquei em /usr/local/zend/etc/ext.d/pcntl.ini e vinculado em /usr/local/zend/etc/conf.d ).

No entanto, ainda não consigo explicar por que este arquivo está faltando em uma nova instalação do Zend. Além disso, eu não gostaria apenas de copiar um arquivo .so de outra máquina sem ter 100% de compatibilidade, mas parece estar rodando sem problemas.

    
por 07.02.2012 / 09:45

Tags