[Apache][PHP4] Cannot load /etc/httpd/modules/libphp4.so into server: libpq.so.2.1: cannot open shared object file: No such file or directory
Here’s a memo on how to solve the following error when using Apache + PHP4 + PostgreSQL.
This is an error saying that libpq.so.2.1 used by libphp4.so is missing.
# /etc/init.d/httpd configtest
Syntax error on line 941 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/libphp4.so into server: libpq.so.2.1: cannot open shared object file: No such file or directory
When you display and check the dynamic link relationships of libphp4.so, you can confirm that libpq.so.2.1 => not found.
# ldd /etc/httpd/modules/libphp4.so
libpam.so.0 => /lib/libpam.so.0 (0x40177000)
libdl.so.2 => /lib/libdl.so.2 (0x40180000)
libpq.so.2.1 => not found
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40184000)
libresolv.so.2 => /lib/libresolv.so.2 (0x401b2000)
libm.so.6 => /lib/libm.so.6 (0x401c4000)
libnsl.so.1 => /lib/libnsl.so.1 (0x401e6000)
libc.so.6 => /lib/libc.so.6 (0x401fd000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
# find / -name libpq.so.2.1
/usr/local/src/postgresql-7.0.3/src/interfaces/libpq/libpq.so.2.1
/usr/local/pgsql/lib/libpq.so.2.1
Create a symbolic link to /lib for libpq.so.2.1 located under postgres.
# ln -s /usr/local/pgsql/lib/libpq.so.2.1 /lib/libpq.so.2.1
I was able to confirm that libpq.so.2.1 is now being loaded properly.
# ldd /etc/httpd/modules/libphp4.so
libpam.so.0 => /lib/libpam.so.0 (0x40177000)
libdl.so.2 => /lib/libdl.so.2 (0x40180000)
libpq.so.2.1 => /lib/libpq.so.2.1 (0x40184000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40196000)
libresolv.so.2 => /lib/libresolv.so.2 (0x401c4000)
libm.so.6 => /lib/libm.so.6 (0x401d6000)
libnsl.so.1 => /lib/libnsl.so.1 (0x401f8000)
libc.so.6 => /lib/libc.so.6 (0x4020f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
# vi /etc/httpd/conf/httpd.conf
#LoadModule php4_module lib/apache/libphp4.so
LoadModule php4_module /usr/lib/apache/libphp4.so
[Reference]:2日目突入ちぅ - やちまうの戯言
That’s all from the Gemba.