LoginSignup
24
28

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-28

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に移行しないとなぁ。。。)

24
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
28