Inicialização PHP: Não é possível carregar a biblioteca dinâmica: não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório

2

Estou tentando compilar uma versão específica de GEOS e seu Ligações PHP no ambiente Travis CI ; eles estão usando o Ubuntu.

Aqui está o meu script de instalação:

sudo apt-get update
sudo apt-get remove 'libgeos.*'
sudo apt-get autoremove

wget https://github.com/libgeos/libgeos/archive/$VERSION.tar.gz
tar zxf $VERSION.tar.gz
cd libgeos-$VERSION
./autogen.sh
./configure
make
sudo make install
cd ..

wget https://git.osgeo.org/gogs/geos/php-geos/archive/1.0.0rc1.tar.gz
tar zxf 1.0.0rc1.tar.gz
cd php-geos
./autogen.sh
./configure
make
mv modules/geos.so $(php-config --extension-dir)
cd ..

echo "extension=geos.so" > geos.ini
phpenv config-add geos.ini

Tudo parece ser compilado corretamente, mas quando o PHP tenta carregar a extensão GEOS, esta mensagem aparece:

PHP Startup: Unable to load dynamic library '/home/travis/.phpenv/versions/5.6.28/lib/php/extensions/no-debug-zts-20131226/geos.so' - libgeos_c.so.1: cannot open shared object file: No such file or directory in Unknown on line 0

Eu executei este comando na máquina:

sudo find / -name 'libgeos_c.so*'

E aqui está o resultado:

/usr/local/lib/libgeos_c.so.1.9.0
/usr/local/lib/libgeos_c.so.1
/usr/local/lib/libgeos_c.so
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1.9.0T
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1.9.0
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so

Portanto, parece que a recém-criada extensão PHP do GEOS está tentando carregar o arquivo de objeto compartilhado de outro local que não o /usr/local/lib .

Como posso corrigir isso?

Aqui está o registro completo no Travis CI .

    
por Benjamin 10.12.2016 / 11:45

2 respostas

0

Eu não encontrei uma maneira de fazer a extensão procurar as bibliotecas compartilhadas em /usr/local/lib , mas eu encontrei uma maneira de fazer a libgeos instalá-las em /usr/lib , que é onde a extensão está procurando por elas. / p>

Use apenas --prefix ao criar libgeos:

./configure --prefix=/usr
    
por 11.12.2016 / 00:48
0

Na versão mais recente, as ligações do PHP agora são um projeto independente, portanto ldconfig deve ser executado após a compilação do libgeos e php-geos para o módulo PHP para carregar bibliotecas dinâmicas de libgeos corretamente.

    
por 16.06.2017 / 12:46