Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?
@joe_hirata

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

21
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
churapps
沖縄から届けるエンターテイメント

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
21
Help us understand the problem. What is going on with this article?