PHP 시작: 동적 라이브러리를 로드할 수 없습니다. 공유 개체 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

PHP 시작: 동적 라이브러리를 로드할 수 없습니다. 공유 개체 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

특정 버전을 컴파일하려고 합니다.지구관측시스템그리고 그것의PHP 바인딩내부에트래비스 실환경; 우분투를 사용하고 있습니다.

내 설치 스크립트는 다음과 같습니다.

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

모든 것이 잘 컴파일되는 것 같지만, PHP가 GEOS 확장을 로드하려고 하면 다음 메시지가 나타납니다:

PHP 시작: 동적 라이브러리 '/home/travis/.phpenv/versions/5.6.28/lib/php/extensions/no-debug-zts-20131226/geos.so'를 로드할 수 없습니다. - libgeos_c.so.1: 불가능 공유 개체 파일 열기: '알 수 없음' 행 0에 해당 파일이나 디렉터리가 없습니다.

내 컴퓨터에서 다음 명령을 실행했습니다.

sudo find / -name 'libgeos_c.so*'

결과는 다음과 같습니다.

/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

따라서 새로 구축된 GEOS PHP 확장 프로그램이 /usr/local/lib.

이 문제를 어떻게 해결할 수 있나요?

여기있어Travis CI에 전체 로그인.

답변1

에서 공유 라이브러리를 찾기 위해 확장을 얻는 방법을 찾지 못했지만 /usr/local/liblibgeos를 에서 설치하도록 하는 방법을 찾았고 /usr/lib확장이 이를 찾는 곳이 바로 그곳입니다.

--prefixlibgeos를 빌드할 때 사용하세요:

./configure --prefix=/usr

답변2

최신 버전에서는 이제 PHP 바인딩이 별도의 프로젝트이므로 동적 라이브러리를 올바르게 로드 하려면 PHP 모듈 ldconfig이후 libgeos및 사이에서 php-geos실행 해야 합니다.libgeos

관련 정보