構築したばかりのサーバーで
$ 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ユーザーのみ読み書きできる状態になってしまっていました。
適切に権限を追加して完了。
以上でぇぇぇぇす。
0 件のコメント:
コメントを投稿