Edited at

PHPの「Unable to load dynamic library」を解消する方法

More than 1 year has passed since last update.


PHPの「Unable to load dynamic library」を解消する方法

とある案件の管理用サーバーの検証環境構築時の出来事。

本番環境の管理サーバーのPHPバージョンなどを確認しながら検証環境構築を進めておりました。

その環境ではPHP5.3を利用しており正常に動作しているものの、実は裏で警告が出てました。

(この時点で「正常」ではないのですが・・・)

※ちなみにPHP7系に後日移行予定です。

似た内容の記事がすでにQiitaに存在するかと思うのですが、僕なりの解消手順、作業ログとして記事にすることにしました。


環境


  • AWS t2.micro EC2インスタンス


    • Amazon Linux AMI release 2018.03

    • Apache/2.2.34 (Unix)

    • PHP 5.3.29




警告内容

$ php -v

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_pdo.dll' - /usr/lib64/php/modules/php_pdo.dll: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

PHP自体は動作しているが、ライブラリをロードできない旨の警告が出ている。

またまた。そんなわけないじゃーん。

$  ll /usr/lib64/php/modules/ | grep php_pdo

ほんまや(°▽°)

ちゃんとライブラリ無いね笑


修正

phpの設定ファイルを確認してみた

$ php --ini | head -n5

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_pdo.dll' - /usr/lib64/php/modules/php_pdo.dll: cannot open shared object file: No such file or directory in Unknown on line 0
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,

/etc/php.iniを修正するよ

$ sudo su

$ vi /etc/php.ini

ぺろぺろと修正。。。

以下のようにしました

$ cat /etc/php.ini | grep php_pdo -n1

927-; Fix: Unable to load dynamic library error.
928:; extension=php_pdo.dll
929-

extension=php_pdo.dllの行が不要でした。

恐らく、参考になるサイトを見ながらPHPの導入を行ったので、不必要なライブラリを読み込む設定を追加したのだろう。。。

コメントアウトし、1つ上の行にコメントを入れました。

この後、exitコマンドでrootから抜けました。


修正完了

httpdプロセス再起動

$  sudo service httpd restart

Stopping httpd: [ OK ]
Starting httpd: [ OK ]

再起動完了!!

PHPの動作を確認してみる。

バージョンの確認コマンドでも--iniオプションでもなんでも良いと思います。実行します。

$ php -v

PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

無事、警告が解消されましたね。


さいごに

今回、手元の環境では設定の誤りが原因で存在しないphp_pdo.dllライブラリを読み込もうとして警告を履いておりましたが、異なるライブラリでもロード時の警告が発生し得ます。

なので、ls -la [警告に表示されたライブラリへのパス]などで参照できるか確認後、php.iniの設定に誤りが無いか確認してみてください。

(´-`).。oO(早めにPHP7に移行しないとなぁ。。。)