PHP Aviso: Inicialização do PHP: Não é possível carregar a biblioteca dinâmica

1

Eu tentei executar meu script via cron, mas não estava funcionando ...

*/1 * * * * /usr/local/bin/php -f /usr/local/www/maintain.php > /usr/local/www/php.log

Então, decidi tentar executar esse script a partir da linha de comando em massa assim:

/usr/local/bin/php -f /usr/local/www/maintain.php > /usr/local/www/php.log

E então recebi a seguinte mensagem de aviso / erro:

# /usr/local/bin/php /usr/local/www/maintain.php > /usr/local/www/php.log
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20090626/libpcre.so' - Cannot open "/usr/local/lib/php/20090626/libpcre.so" in Unknown on line 0

Mas este script está funcionando muito bem, quando eu estou rodando via www como http://my-url.com/maintain.php .

Estou usando o PHP 5 ~ com o Lighttpd executando o FreeBSD. Onde está o meu problema?

    
por Cyclone 23.02.2012 / 16:56

2 respostas

2

Execute este comando (substituindo / usr / bin / php pelo caminho que você está usando para o binário PHP, neste caso, / usr / local / bin / php):

# ldd /usr/bin/php
linux-gate.so.1 =>  (0x00932000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00f16000)
libedit.so.0 => /usr/lib/libedit.so.0 (0x008dd000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00791000)
libgmp.so.3 => /usr/lib/sse2/libgmp.so.3 (0x00de8000)
...

Permite ver com precisão quais bibliotecas compartilhadas o binário depende. Eu tive esse problema um tempo atrás com alguma biblioteca PHP criptográfica. Os erros do PHP não forneceram informações úteis sobre por que o script não estava sendo executado, até que eu executei este comando e pude ver o que estava faltando. Enquanto o erro que você está vendo reclama sobre uma biblioteca específica, há uma boa chance de que a biblioteca dependa de outra, que o PHP não está lhe dizendo no erro. O ldd dá-lhe esta informação vital que falta.

Note que estou rodando o CentOS Linux aqui. Para o BSD, o comando ldd pode ser chamado de outra coisa (nunca usei o BSD, portanto não posso comentar sobre isso).

    
por 04.03.2012 / 16:20
0

/usr/local/lib/libpcre.so é a biblioteca C.

Você compilou o próprio php ou de portos?

Parece que foi compilado com uma biblioteca PCRE personalizada, porque normalmente o php deve incluir suporte de pcre.

    
por 24.02.2012 / 17:08