構築したばかりのサーバーで
$ php -vと打ってphpのバージョンを確認しようとしたら、
php: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directoryというエラーが出ちゃいました。
エラー内容のとおり、
何かしらの共有ライブラリ(今回はlibpq.so.5)が読み込めないというエラーです。
ちなみにrootになって同じコマンドを打つと
# php -v PHP 5.6.24 (cli) (built: Mar 2 2017 15:32:45) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologiesと問題なく実行されます。
つまり、今回のエラーは何かしらのPermissionが関係してるだろうと予想つきました。
こういう場合は共有ライブラリの依存関係を確認してみます。
$ ldd /usr/local/bin/php linux-vdso.so.1 => (0x00007ffda23d7000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f2982411000) libz.so.1 => /lib64/libz.so.1 (0x00007f29821fa000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2981fe0000) libpq.so.5 => not found librt.so.1 => /lib64/librt.so.1 (0x00007f2981dd7000) libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f2981b6e000) libm.so.6 => /lib64/libm.so.6 (0x00007f298186c000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f2981667000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f298144e000) libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f29810e4000)
注目すべきは、libpq.so.5 => not found となっているところです。
今度はrootになって確認してみます。
# ldd /usr/local/bin/php linux-vdso.so.1 => (0x00007ffce4d60000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f0d05ff1000) libz.so.1 => /lib64/libz.so.1 (0x00007f0d05dda000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f0d05bc0000) libpq.so.5 => /usr/local/pgsql/lib/libpq.so.5 (0x00007f0d05997000) librt.so.1 => /lib64/librt.so.1 (0x00007f0d0578e000) libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f0d05525000) libm.so.6 => /lib64/libm.so.6 (0x00007f0d05223000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f0d0501e000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f0d04e05000)
今度は libpq.so.5 => /usr/local/pgsql/lib/libpq.so.5 と表示されました。
ということで/usr/local/pgsqlディレクトリを確認してみます。
$ ls -l /usr/local drwxr-xr-x 7 root root 62 3月 2 15:44 bin drwxr-xr-x. 2 root root 22 7月 29 2016 etc drwxr-xr-x. 2 root root 6 8月 12 2015 games drwxr-xr-x. 3 root root 16 7月 29 2016 include drwxr-xr-x. 3 root root 30 12月 6 15:26 lib drwxr-xr-x. 2 root root 6 8月 12 2015 lib64 drwxr-xr-x. 2 root root 6 8月 12 2015 libexec drwx------ 6 postgres postgres 52 3月 2 14:41 pgsql drwxr-xr-x 3 root root 16 3月 2 15:33 sbin予想通りpgsqlユーザーのみ読み書きできる状態になってしまっていました。
適切に権限を追加して完了。
以上でぇぇぇぇす。