phpのライブラリが読み込めないエラーが出たので

phpでpdo_pgsqlとpgsqlのエラーがでる

php -vしようとしたらモジュールが読み込めないですよってwarningが出る。
php.iniでpgsqlを使うってなってるのにモジュールがないのでしょう。

% php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/pdo_pgsql.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/pdo_pgsql.so, 9): image not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/pgsql.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/pgsql.so, 9): image not found in Unknown on line 0
PHP 5.4.45 (cli) (built: Apr 22 2016 21:36:17) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

昔はこういう時に「あっ…もう一度./configureか…」って思いがちだったけど
実はこの読み込めていないモジュールだけを追加できるのだと知ってからすごく幸せです。

phpizeで拡張モジュールをインストールする

ここ( https://secure.php.net/get/php-5.4.45.tar.gz/from/a/mirror )からハポン(japan)のソースをDLする
DLしたソースにcd

% cd ./Downloads/php-5.4.45/ext/pdo_pgsql 

今のPHPの在り処を確かめておく

% whereis php
/usr/bin/php

確かめたら同じ場所にphpizeがあるので、phpizeする

% /usr/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

先程たしかめた場所にあるphp-configを利用するように指定

% ./configure --with-pdo-pgsql --with-php-config=/usr/bin/php-config
(略)
% sudo make install
(略)
----------------------------------------------------------------------
Libraries have been installed in:
   /Downloads/php-5.4.45/ext/pdo_pgsql/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
     during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20100525/

pgsqlも同様に、ソースのディレクトリに移動してphpize、
configure〜make installまでする

% /usr/bin/phpize
()
% ./configure --with-pgsql --with-php-config=/usr/bin/php-config
()
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20100525/

無事にWarningが消える

% php -v
PHP 5.4.45 (cli) (built: Apr 22 2016 21:36:17) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Profile picture

ぴーやま
プログラミングを嗜んでします。中華料理で出てくるたまごふわふわのコーンスープが好きです。